如何在PHP上使用register_globals

时间:2014-04-25 14:48:24

标签: php

我在我的网站上使用全局变量GET,POST,FILES,SESSION。我在register_globals is on的服务器上写了我的网站。我只是将我的网站移动到register_globals is off的另一台服务器,我实际上不知道如何处理它。

例如,我有这个代码:

$do = $_GET['do'];

$name = $_POST['name'];

我怎么理解,我不能这样做,php无法提取这些数据。如何更改我的代码以从GET,POST,SESSION,FILES接收数据?

谢谢

4 个答案:

答案 0 :(得分:7)

你误解了。 $_GET& co是superglobals,它们始终可用且无法禁用,您的代码将始终有效。

register_globals使这些$_GET值可直接作为变量使用。即而不是$_GET['do'],您可以使用$do

答案 1 :(得分:1)

这是访问变量的正确方法,适用于register_globals_gpc = off

$do = $_GET['do'];

如果register_globals_gpc = on自动提取$_GET,这将有效:

echo $do;

所以如果你按照你表现的方式这样做,那么一切都很顺利。 $_GET$_POST$_COOKIE以及$_SERVER$_SESSION已经是超全球的,可以在任何地方使用。

答案 2 :(得分:1)

快速简便的方法是使用extract功能。

extract($_POST);
extract($_GET);
extract($_COOKIES);

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

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

答案 3 :(得分:1)

当我搜索此问题并打开它给我the solution的第一个搜索结果时。试试这个,希望它能为你效用