Pergunta

Tome este código:

<?php
if (isset($_POST['action']) && !empty($_POST['action'])) {
    $action = $_POST['action'];
}

if ($action) {
    echo $action;
}
else { 
    echo 'No variable';
}
?>

E, em seguida, acessar o arquivo com? Action = test Existe alguma maneira de prevenir $ action sejam automaticamente declarado pelo GET? À excepção, claro, adicionando

&& !isset($_GET['action'])

Por que eu iria querer a variável a ser declarada por mim?

Foi útil?

Solução

Verifique se o seu php.ini para a definição register_globals. É, provavelmente, você deseja-lo.

Por que eu iria querer a variável a ser declarada por mim?

Você não. É um risco de segurança horrível. Faz Meio Ambiente, GET, POST, Cookie e variáveis ??globais do servidor (Manual do PHP) . Estes são um punhado de variáveis ??reservadas em PHP.

Outras dicas

Looks como register_globals no seu php.ini é o culpado. Você deve desligar isso. É também um enorme risco de segurança para tê-lo.

Se você estiver em hospedagem compartilhada e não pode modificar php.ini, você pode usar ini_set () para ligar register_globals off.

Definir register_globals para fora, se eu estou entendendo sua pergunta. Consulte http://us2.php.net/manual/en/language .variables.predefined.php

Se você não tem acesso ao php.ini , um ini_set('register_globals', false) no script php não funcionará (variáveis ??já são declarados) Um Htacces S com:

php_flag register_globals Off

pode, por vezes ajuda.

Você pode testar, se todas as variáveis ??são declaradas corretamente, girando o nível log PHP em PHP.INI para

error_reporting  =  E_ALL 

O trecho de código agora deve gerar um aviso.

Em algum momento na história do php eles tomaram a decisão controversa para desligar register_globals por padrão, pois foi um enorme risco de segurança. Ele dá a todos o potencial de variáveis ??injetar em seu código, criar consequências inimagináveis! Este "recurso" é ainda removido em PHP6

Se você perceber que ele está em contato com o administrador para desligá-lo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top