+2

Cuidados com variáveis globais

criado por Roberto Bertó em 09/12/2000 12:00pm
O PHP eh uma linguagem bastante funcional. Uma das suas grandes sacadas eh justamente o fato de tudo o que voce declarar na QUERY_STRING ou enviar por POST ele automaticamente joga para uma variavel global, normalmente. Essa grande facilidade tambem tem os seus incovenientes em termos de seguranca.

Algumas vezes os programadores utilizam variaveis temporarias de controle. Essas variaveis sao deixadas em branco. O porem eh que voce pode dar um valor a ela pela QUERY_STRING caso voce conheca o script ou ate mesmo adivinhe.

Vejamos um exemplo da aplicacao desse tipo de variaveis:

<h><?PHP
while (empty($a)) {
$b++;
if ($b >= 10) {
$a = 1;
}
print "ola $b<Br>";
}
?></h>

Nesse exemplo temos duas variaveis de controle. A primeira delas chama-se $a e a segunda $b. A variavel $a serve para controlar o fluxo do while. Ja a variavel $b serve para mudar o valor do $a.

Claro que um for iria ser bem mais util nesse caso, porem eu so quero dizer que o usuario poderia ter passado script.php?a=1 e o while nem seria executado ou por script.php?b=5 e o while seria executado menos vezes. Para voce contornar isso, basta dar um valor as variaveis:

<h><?PHP
$a = 0;
$b = 0;
?></h>

Ou entao destruir elas:
<h><?PHP
unset($a);
unset($b);
?></h>

Ha tambem outros tipos de medidas de seguranca que voce pode tomar, como editar o php.ini e por off no campo register_globals. Ai voce tera um maior controle de onde vem as variaveis. Voce tera que usar as $HTTP_*_VARS[]. Por exemplo: para pegar o valor de uma variavel enviada por GET que se chama nome voce teria que usar $HTTP_GET_VARS[nome]. Eh o meio mais seguro de trabalhar com variaveis porem o mais incomodo.

Mais informacoes:
http://php.net/manual/language.variables.predefined.php

Comentários:

Mostrando 1 - 4 de 4 comentários
Boa, já tive vários problemas com variáveis globais.
17/09/2007 4:29am (~16 anos atrás)

ótimo artigo...
13/06/2007 10:39pm (~17 anos atrás)

Preciso saber o formato do array $j para te responder.
05/08/2003 1:23pm (~21 anos atrás)

Rodrigo Vog disse:
echo("<a Href=lista.php?i=$j></a>");
suponha que $j seja um array como faço para isso funcionar?
04/08/2003 11:58pm (~21 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)