POST变量出现在PHP符号表中

POST变量出现在PHP符号表中,php,Php,我发现我的POST变量被指定为脚本中的变量 我觉得这种行为不对。$\u POST和$\u GET的元素作为提取的变量出现在符号表中,而我没有显式设置它们 下面的例子说明了我的意思。该脚本是用 并且变量$select已经设置好,并且在脚本执行时在符号表中。对此有何解释?我认为我必须提取($\u POST)或显式设置变量,例如,$select=$\u POST['select'] 以下是脚本: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran

我发现我的POST变量被指定为脚本中的变量

我觉得这种行为不对。$\u POST和$\u GET的元素作为提取的变量出现在符号表中,而我没有显式设置它们

下面的例子说明了我的意思。该脚本是用

并且变量$select已经设置好,并且在脚本执行时在符号表中。对此有何解释?我认为我必须提取($\u POST)或显式设置变量,例如,$select=$\u POST['select']

以下是脚本:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>                     
<?php 
echo "<pre>"; 
print_r(array_keys(get_defined_vars())); 
echo "</pre>"; 
echo "\$select = $select";  
die; ?>  
PHP版本是5.2.9-1

啊!刚刚解决了我自己的问题。register\u globals指令在php.ini中设置为“开”。我已经禁用了它,它应该是这样的。我把这个放在这里,以防其他人注意到同样的问题

干杯
Jeff是否启用了寄存器全局?如果是这样,你真的应该考虑关闭它,因为它可能造成混乱,但更重要的是,这是一个可怕的安全风险。 这正是我要问的。这可能看起来很奇怪,但你应该自己回答这个问题,并接受它作为将来的参考。正如我所说的,我立即禁用了它。但是,它只在本地服务器上,而不在远程服务器上。
Array
(
    [0] => GLOBALS
    [1] => _ENV
...
    [31] => select
...
    [59] => argv
    [60] => argc
    [61] => _POST
    [62] => _GET
    [63] => _COOKIE
    [64] => _SERVER
    [65] => _FILES
    [66] => _REQUEST
)
$select = 1