如何在PHP上关闭register_globals

如何在PHP上关闭register_globals,php,Php,我在我的网站上使用全局变量,如GET、POST、文件、会话。我在register_globals所在的服务器上写了我的网站。我刚把我的网站移到另一个服务器上,register_globals关闭了,我真的不知道如何处理它 对于exmaple,我有以下代码: $do = $_GET['do']; 或 我是怎么理解的,我不能这样做,php不能提取这些数据。如何更改代码以从GET、POST、会话和文件接收数据 谢谢你误会了$_GET&co是始终可用且无法禁用的,您的代码将始终有效 register\

我在我的网站上使用全局变量,如GET、POST、文件、会话。我在register_globals所在的服务器上写了我的网站。我刚把我的网站移到另一个服务器上,register_globals关闭了,我真的不知道如何处理它

对于exmaple,我有以下代码:

$do = $_GET['do'];

我是怎么理解的,我不能这样做,php不能提取这些数据。如何更改代码以从GET、POST、会话和文件接收数据

谢谢你误会了$_GET&co是始终可用且无法禁用的,您的代码将始终有效


register\u globals使那些$\u GET值作为变量直接可用。也就是说,您可以使用$do来代替$GET['do']。

这是访问VAR的正确方法,并且可以使用register\u globals\u gpc=off:

如果$\u GET上的register\u globals\u gpc=将自动提取,这将起作用:

echo $do;

因此,如果你以你表现出来的方式去做,那么一切都很好$_GET、$\u POST、$\u COOKIE以及$\u服务器和$\u会话已经是超全局的,可以在任何地方使用。

快速简便的方法是使用提取功能

extract($_POST);
extract($_GET);
extract($_COOKIES);
但从安全性和可维护性方面来看,这是非常糟糕的!如果可能,您应该将代码重写为:

$variable = $_POST['variable'];
..

当我在谷歌上搜索这个问题并打开它给我的第一个搜索结果时。试试这个,希望它对你有用

你为什么不这样做?你可以做$name=$\u POST['name'],为什么不能呢?仅仅因为register\u globals处于关闭状态并不意味着\u GET/\u POST和其他超globals会神奇地消失。他们从不依赖全球注册。谢谢,但实际上它不起作用。我在访问index.php?do=123时使用了这个简单的示例来检查:ifisset$\u GET['do']{echo yes;},并且我没有收到任何结果,这对于register\u globals来说不是问题。
extract($_POST);
extract($_GET);
extract($_COOKIES);
$variable = $_POST['variable'];
..