我一直在尝试解决这个问题一段时间,这让我疯狂.基本上我有美国和加拿大用户的表格.表格底部有一个加拿大用户链接,指向用户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'] . '');
?>
Run Code Online (Sandbox Code Playgroud)
基本上,如果他们点击链接,它会设置$ _SESSION ['can'] = 1.现在有另一个选项,如果他们点击该链接,它会将他们带回此页面,并且会话应该被销毁并且是新的设置了值(好吧,这就是它应该做的).问题是,我已打印出$ _SESSION ['can'],并且在转到该页面后仍然保留了旧值.有没有更好的方法来做到这一点,或者我的代码有什么问题吗?谢谢您的帮助.
这就是你写的:
if (isset($_SESSION['can'])) {
session_start();
Run Code Online (Sandbox Code Playgroud)
session_start
是读取与用户的PHPSESSID
cookie 关联的会话文件并填充的函数$_SESSION
,因此您尝试在数组之前读取任何值.
session_start
在检查是否$_SESSION['can']
有值之前,您需要打电话.
您也不需要为了更改值而销毁和创建新会话.
<?php
session_start();
if (isset($_SESSION['can'])) {
$_SESSION['can'] = 2;
} else {
$_SESSION['can'] = 1;
}
header('Location: '. $_SERVER['HTTP_REFERER'] . '');
?>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
35281 次 |
最近记录: |