Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:自动获取声明为变量的数据_Php_Url_Get - Fatal编程技术网

PHP:自动获取声明为变量的数据

PHP:自动获取声明为变量的数据,php,url,get,Php,Url,Get,以这个代码为例: <?php if (isset($_POST['action']) && !empty($_POST['action'])) { $action = $_POST['action']; } if ($action) { echo $action; } else { echo 'No variable'; } ?> 为什么要为我声明变量?检查php.ini中的register\u globals设置。它可能是开着的,你想把

以这个代码为例:

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

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

为什么要为我声明变量?

检查php.ini中的
register\u globals
设置。它可能是开着的,你想把它关掉

为什么我要为自己声明变量


这是一个可怕的安全风险。它使环境、GET、POST、Cookie和服务器变量成为全局变量。这些是PHP中的一小部分。

看起来像是PHP中的
register\u globals
。ini是罪魁祸首。你应该把它关掉。戴上它也会带来巨大的安全风险


如果您在共享主机上并且无法修改php.ini,您可以使用来关闭register\u globals。

如果我理解您的问题,请将register\u globals设置为off。
请参见

您可以通过将PHP.INI中的PHP日志级别设置为

error_reporting  =  E_ALL 

您的代码片段现在应该会生成一个通知

在php历史的某个时刻,他们做出了一个有争议的决定,默认关闭register_globals,因为这是一个巨大的安全隐患。它让任何人都有可能在你的代码中注入变量,产生不可想象的后果!在php6中甚至删除了该“功能”


如果您注意到它处于打开状态,请与管理员联系将其关闭。

如果您无权访问php.ini,php脚本中的
ini\u集('register\u globals',false)
将无法工作(变量已声明) a.通过以下方式访问:


有时候我能帮上忙。

谢谢你的回答,这正是我一直在寻找的答案。但我的例子是register_globals影响的唯一东西吗?我在上面的答案中发布了更多信息——它影响环境、get、post、cookie和服务器。
error_reporting  =  E_ALL 
php_flag register_globals Off