【发布时间】:2011-10-23 08:45:58
【问题描述】:
我已经尝试解决这个问题一段时间了,这让我发疯了。基本上我有一个美国和加拿大用户的表格。加拿大用户的表单底部有一个链接,将用户引导至 can-sesssion.php,其中包含:
<?php
if (isset($_SESSION['can'])) {
session_start();
session_destroy();
session_unset();
session_start();
$_SESSION['can'] = 2;
}
else {
session_start();
$_SESSION['can'] = 1;
}
header('Location: '. $_SERVER['HTTP_REFERER'] . '');
?>
基本上,如果他们点击该链接,它会设置 $_SESSION['can'] = 1。现在还有另一个选项,如果他们点击该链接,它会将他们带回此页面,并且会话应该被销毁并设置了一个新值(嗯,这就是它应该做的)。问题是,我已经打印出 $_SESSION['can'],并且在转到该页面后它仍然保留那个旧值。有没有更好的方法来做到这一点,还是我的代码有问题?感谢您的帮助。
【问题讨论】:
-
您应该知道
HTTP_REFERER不是您可以依赖设置的标题,也不能设置为实际的引用页面。它是可选的,浏览器可以发送它想要的任何内容。 -
有没有更有用的选项,或者在页面中简单地包含这个 php 会更实用?
-
您可以将代码放在要更改会话变量的任何位置。您可以根据需要多次更改内容,而无需将任何人转到新页面。