题
采取这个代码:
<?php
if (isset($_POST['action']) && !empty($_POST['action'])) {
$action = $_POST['action'];
}
if ($action) {
echo $action;
}
else {
echo 'No variable';
}
?>
然后使用?action =测试访问文件,是否有任何方法可以防止$ action自动声明get?当然除了添加
&& !isset($_GET['action'])
为什么我希望为我声明变量?
其他提示
好像 register_globals
在你的 php.ini 中是罪魁祸首。你应该把它关掉。佩戴它也存在巨大的安全风险。
如果您使用共享主机并且无法修改 php.ini,您可以使用 ini_set() 关闭 register_globals 。
如果我理解你的问题,请将 register_globals 设置为关闭。看 http://us2.php.net/manual/en/language.variables.predefined.php
如果您无权访问 php.ini, , A ini_set('register_globals', false)
在php脚本中,无法正常工作(变量已经声明) .htacces与:
php_flag register_globals Off
有时可以提供帮助。
您可以通过将 PHP.INI 中的 PHP 日志级别设置为来测试所有变量是否已正确声明
error_reporting = E_ALL
您的代码片段现在应该生成一个通知。
在 php 历史上的某个时刻,他们做出了一个有争议的决定,默认关闭 register_globals,因为这是一个巨大的安全隐患。它使任何人都有可能在代码中注入变量,造成难以想象的后果!这个“功能”甚至在 php6 中被删除了
如果您发现它已打开,请联系您的管理员将其关闭。
不隶属于 StackOverflow