Ir para conteúdo
Fórum Script Brasil
  • 0

Register_globals


Edenfall

Pergunta

então, eu não curto muito esse recurso e prefiro trabalhar com ele desligado. claro que ele tem, lá as suas utilidades, mas suponhamos que eu esteja trabalhando com sessões, dados de formulário e usando o (útil) php?dir:

na url temos:

beleza! eu tenho register_globals ativado e só preciso chamar o $area e o $contador diretamente pelo nome, sem precisar de frescuras como $area=$_GET['area'];.

sem pensar, eu crio um formulário que trate de outro assunto, onde exista um input com o nome 'contador'. pronto! tá feita a merreba! pior ainda se eu trabalho num script que trabalhe com sessões e preciso definir uma variável de sessão chamada 'contador' com o valor 'true'.

se o register_globals estiver ativado, essas variáveis vão se misturar e formar uma bagunça enorme que vai me custar pelo menos uns bons quartos de hora quebrando a cabeça pra descobrir o que está de errado.

com ele desativado, posso trabalhar com essas mesmas variáveis, utilizando o seguinte:

$_GET['contador];

$_POST['contador'];

$_SESSION['contador'];

e por aí vai.

claro que se eu tomar bastante cuidado, posso evitar que esse tipo de coisa aconteça, mas num projeto grande, é quase impossível evitar esse tipo de erro. fica mais fácil desativar (ou simplesmente não usar, se você não tiver acesso ao php.ini) e gastar uns segundos a mais para usar as variáveis predefinidas no PHP.

afinal, se fosse bom, não viria desativada no PHP

existem alguns quesitos de segurança também, mas não me aprofundei nesse assunto ainda.

a questão é: quais as vantagens de se ativar e de se desativar o register_globals?

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Seguinte,

Se você programa direito, e faz o sistema todo, sabe quais as variáveis utilizadas naquela parte do sistema !

Por que, por mais que você tenha 5 variáveis com nomes iguais, elas podem estar em partes isoladas do sistema a ponto de não atrapalharem uma a outra !

Eu acredito que o fato de se ativar o regiter_globals peca principalemente no quisito segurança !!

Em um formulário com o Método POST e com o register_globals ativado, você pode passar qualquer valor para a página que valida o formulário através de Query_String !!

E desvantagem de estar desativado ?! Não vejo nenhuma !!

Link para o comentário
Compartilhar em outros sites

  • 0

Não M@luco ... saca:

Se um cara usa um formulário com o método post, mas programa baseado no fato de o register_globals está ativado, ele não vai declarar a variável desta forma:

$var = $_POST['var']; ou $var = $HTTP_POST_VARS['var'];

E sim vai sair usando a variável,

Coisa que, usando a query string, pode se burlar, podendo se passar qualquer valor para esse campo !

Entendeu agora ?

Tudo depende da forma de programar de cada um !

Link para o comentário
Compartilhar em outros sites

  • 0

não sou uma autoridade no assunto.. mas estou aprendendo PHP estudando dois Sistemas consagrados que é o Invision e o PHPBB, ambos utilizam $HTTP_POST_VARS['var']; para tudo.. eles trabalham com a hipotese do register estar setado como off, no meu aqui setei como off, tanto que o ppg e o gladiador ate me falaram que poderia utilizar o on..

mas como faço Sistemas para Vendas não sei se amanha alguém esta com o register off se o Site todo estiver desenvolvido em cima do on, imagine o trabalho que sera modifica-lo

Fora a parte de Segurança que foi comentado ai

Link para o comentário
Compartilhar em outros sites

  • 0

Tem isso também, jissa... o $_POST e $HTTP_POST_VARS funcionam sempre...

Também tem o esquema de você mesmo se embaralhar com as variáveis que chegam do post e as que você mesmo criou...

Também tem outra: o $_POST é uma array, por isso você tem todas as vantagens de tratamento de array que qualquer outra array teria... pode ficar muito mais fácil filtrar os dados que chegam...

Principalmente se a gente usar a função do array_walk ou alguma coisa parecida...

Isso tudo que eu disse, é claro, além da segurança...

Link para o comentário
Compartilhar em outros sites

  • 0

então.

o $HTTP_POST_VARS é mais antigo e dizem que pode não estar mais disponível em alguma futura atualização do PHP. Acho impossível que isso aconteça, mas não é uma hipótese a descartar. o $_POST['var'] é o estilo mais curto e ótimo para ser utilizado no caso. melhor do que atribuir um valor do $_POST['var'] a uma variável, é utilizar o próprio no código. estou fazendo isso e não tive problema algum até agora. e até agora não tive problemas quanto a trabalhar com o register_globals desativado.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...