为变量赋值会更改会话变量的值

时间:2012-01-20 13:23:54

标签: php

我的一个PHP页面在一个据称安装了PHP 5.2的远程服务器上运行,它接收一个带有“密码”密钥的POST请求,然后,看起来,最奇怪的事情可能发生。在下面的代码中,POST请求的“密码”被重新定义,以使您的值跟踪更简单,但在测试中,它仍然会产生评论中指示的超自然输出。

$_POST["passcode"] = "hi";
$_SESSION["passcode"] = "hello";

echo $_SESSION["passcode"] . '<br />'; // prints "hello"
$passcode = $_POST["passcode"];
echo $_SESSION["passcode"] . '<br />'; // prints "hi"

编辑:所以看起来像是关于register_globals。因此是另一个问题:

如果我无法访问服务器上运行代码的php.ini文件,有没有办法关闭此行为?

5 个答案:

答案 0 :(得分:8)

显然,会话变量被注册为全局变量。

答案 1 :(得分:7)

闻起来像register_globals

如果您无法修改php.ini文件,可以在.htaccess文件中停用此设置,如here所述

答案 2 :(得分:2)

可能的一个原因是你写过的地方

$_SESSION['passcode']=&$passcode;

答案 3 :(得分:2)

会话变量可以配置为全局变量处理,因此可以通过$_SESSION["passcode"]$passcode进行访问。检查你的PHP配置(register_Globals)

答案 4 :(得分:-1)

更改变量的名称

$passcode

到别的地方。?