我一直在查看在PHP 4服务器上运行的脚本中的问题(我知道......他们正在升级,但他们需要修复仍在PHP 4上的服务器。)
我遇到的问题是会话变量在下一页开头被重置为不同的值。这是我为了达到这一点而进行的测试,现在我不确定发生了什么。
页面结构: main.php - >首先调用start_page.inc。 main.php - >最后调用footer.inc。
以下是正在发生的步骤以及我无法弄清楚的步骤:
start_page.inc: echos 'test2'
(起始页打印出$_SESSION['test']
的值)
default.php: echos 'test2'
(default.php打印出$_SESSION['test']
)的值
default.php: SET 'test2'
(default.php将$_SESSION['test']
的值设置为test2
)
footer.inc: SET 'test'
(footer.inc将$_SESSION['test']
的值设置为test
)
footer.inc: echos 'test'
(footer.inc打印出$_SESSION['test']
的值)
无论刷新页面多少次,它总是以这种方式出现,只有一个例外。第一次设置会话变量时,它会在下次刷新时回显test
。
任何人都明白为什么/如何发生以及如何解决这个问题?我在PHP 5服务器上测试了这些文件并且实际上具有相同的结果。
前两个回声应始终为test
,除非我遗漏了一些东西。
我已经尝试将其剥离到没有其他值的测试页面,并且似乎无法重现它...测试变量不会被覆盖。我专门为这个测试创建了它。
答案 0 :(得分:1)
我记得的可能问题是:你没有使用session_start()
或者远程端不支持或禁用了cookie,如果第二种情况是你必须使用另一种方式传递{{1 (通常是PHPSESSID
)。