O PHP é uma linguagem bastante dinâmica, flexível e criativa.
Uma de suas grandes façanhas é o envio de dados pelo navegador, declarando como
variável global todo o conteúdo repassado por QUERY_STRING (GET) ou por POST, deixando alguns inconvenientes em se tratando de segurança oferecida ao seu script.
Algumas vezes utilizamos variáveis temporárias em laços (while, for, do ..while) e condições (if..elseif..else) em que na maioria das vezes são deixadas em branco e, imaginem só, podemos modificá-las ao repassar conteúdo pela QUERY_STRING, modificando, assim, todo o desenrolar do nosso script.
Como exemplo, imaginem só:
<?php
while (empty($a)) {
$b ;
if ($b >= 10)
$a = 1;
echo “Olá $b
”;
}
?>
Podemos observar que foram utilizadas duas variáveis,
$a e
$b, sendo a primeira para controle do laço e a segunda para a saída do laço, alterando o valor de
$a.
O nosso erro erro esta no seguinte: se repassarmos em nosso script os seguintes valores: script.php?a=123 e script.php?b=4.
No primeiro o laço não seria executado pois a variável
$a não estaria mais limpa. Já no segundo, o laço seria executado menos vezes, não exibindo os dados desejados pelo programador.
Para contornar esse problema poderíamos setar dados para as variáveis, como em:
Ou destruí-los, como em:
<?php
unset($a);
unset($b);
?>
Uma outra maneira e bem mais segura e aconselhada (porém o mais incomodo) de se trabalhar com variáveis seria deixar como
off o campo
register_globals do seu php.ini (tanto para Windows como para Linux), pois assim você teria um maior controle em cima das variáveis, escolhendo quais realmente seriam necesárias ao seu script, utilizando, para isso,
$HTTP_*_VARS[ nome ] para receber suas variáveis.
Para o envio de dados por GET temos:
<?php
$a = $HTTP_GET_VARS[ a ];
$b = $HTTP_GET_VARS[ b ];
?>