我发现我的POST变量在我的脚本中被指定为变量。
这种行为对我来说似乎不对。 $ _POST和$ _GET的元素作为提取的变量出现在符号表中,而我没有明确地设置它们。
以下示例显示了我的意思。使用
调用脚本并且已经设置了变量$ select,并且在脚本执行时在符号表中。对此有解释吗?我以为我必须提取($ _ POST)或明确设置变量,例如$ select = $ _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; ?>
结果如下:
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
PHP版本是5.2.9-1
ARGHH!刚刚解决了我自己的问题。在php.ini中将register_globals指令设置为“On”。我已经禁用它,因为它应该是。我会把这个留在这里以防其他人注意到同样的问题。
干杯 杰夫
答案 0 :(得分:2)
是否启用了Register_globals?如果是,那么你真的应该考虑将其关闭,因为它可能导致混乱,但更重要的是,这是一个可怕的安全风险。