PHP:服务器将$ _SESSION ['Name']数据复制到'$ Name'变量

时间:2010-02-09 06:59:07

标签: php

我刚刚在服务器上发现了一个设置我正在开发一个与我的localhost设置不同的设置,但是,我无法找到更改它的位置。

这是一个简单的例子,说明发生了什么。

$_SESSION['Animal'] = "Dog";
echo "#1: ".$_SESSION['Animal']."<br/>";
echo "#2: ".$Animal;

在我的localhost上,服务器返回:

  

#1:狗
  #2:

在公共主机上,服务器返回:

  

#1:狗
  #2:狗

我猜这是公共服务器php.ini文件中的一个设置,但是,我找不到它的设置。

2 个答案:

答案 0 :(得分:8)

Registered Globals directive似乎已开启。

  

自PHP 5.3.0开始,此功能已被弃用,自PHP 6.0.0起已被删除。非常不鼓励依赖此功能。

Information about the register_globals ini setting

如上面的声明所示,强烈建议您在公共服务器上的php.ini文件中禁用它。

如果您无法访问公共服务器上的php.ini文件,则手册会提示另一种选择:

  

请注意,register_globals不能在运行时设置(ini_set())。虽然如果您的主机允许它,您可以使用.htaccess,如上所述。一个示例.htaccess条目:php_flag register_globals off。

答案 1 :(得分:2)

哦不! 您的主机已启用register_globals,这很糟糕 - have a look at these docs