我遇到了一个奇怪的PHP会话问题。有人能告诉我会话是如何工作的吗?
要查看问题所在,请将以下代码加载到任意php文件中,比如test.php,然后运行2次。注意,您必须运行它两次,即加载页面并重新加载它。
<?
session_start();
$_SESSION["test"] = "Original////";
$test=$_SESSION["test"];
echo $_SESSION["test"];
$test="New////";
echo $_SESSION["test"];
?>在我的服务器上,当我第一次加载这个测试页面时,我得到
原创/原创/
这是正确的。但是当我重新加载它的时候,我得到
原始/新/
这意味着第5行“$test=”新建/“;”实际重写我的$_SESSION“测试”。对我毫无意思。有人知道发生了什么吗?或者它只是发生在我的服务器上?
发布于 2012-11-30 18:48:29
您的服务器上似乎启用了register_globals。您需要禁用该指令。
发布于 2012-11-30 18:52:01
首先,不要使用<?作为PHP的起始标签,请使用<?php。其次,如果您启用了register_globals,这是预期的行为。看看这个链接:
http://www.theblog.ca/session-register-globals
标题是这样写的:
当register_globals为on时,会话变量将覆盖全局变量
示例代码与您的代码类似:
<?php
session_start();
$canadaday = 'July 1st';
$_SESSION['canadaday'] = 'July 2nd';
print '<p>When is Canada Day?</p>';
print '<p><strong>' . $canadaday . '</strong></p>';
?>使用register_globals时,结果为July 2nd。HTH。
发布于 2012-11-30 18:53:04
<?php
session_start();
$_SESSION["test"] = "Original////";
$test=$_SESSION["test"];
echo $_SESSION["test"];
$test="New////";
echo $_SESSION["test"];
?>我已经在我的环境中尝试过你的代码它运行的perfectly.its总是打印原始的/Original/所以它只发生在你的服务器上
https://stackoverflow.com/questions/13643608
复制相似问题