更改SESSION变量值

Wil*_*azi 4 php forms session

我一直在尝试解决这个问题一段时间,这让我疯狂.基本上我有美国和加拿大用户的表格.表格底部有一个加拿大用户链接,指向用户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'],并且在转到该页面后仍然保留了旧值.有没有更好的方法来做到这一点,或者我的代码有什么问题吗?谢谢您的帮助.

Dan*_*man 8

这就是你写的:

if (isset($_SESSION['can'])) {
    session_start();
Run Code Online (Sandbox Code Playgroud)

session_start是读取与用户的PHPSESSIDcookie 关联的会话文件并填充的函数$_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)