这个问题在这里已有答案:
我的问题是当我取消设置会话变量然后重新加载login.php时,会话变量仍然设置。
这是我正在尝试做的事情:
我正在尝试通过在reset.php中设置的会话变量发送错误消息
<?php
session_start();
$_SESSION['reset-msg'] = "This link has already been used";
header("Location: {$url}login.php");
exit();
?>
Login.php应检查此会话是否已设置,然后显示错误消息并取消设置会话变量。
<?php
session_start();
if(isset($_SESSION['reset-msg']) && !empty($_SESSION['reset-msg'])){
print_r($_SESSION);//prints "Array ( [reset-msg] => This link has already been used )"
$warn_msg = $_SESSION['reset-msg'];
$_SESSION['reset-msg'] = "";
unset($_SESSION['reset-msg']);
}else{
$warn_msg = "";
}
print_r($_SESSION);//prints "Array ( )"
exit;
?>
但是,每次重新加载login.php时,我仍然会收到相同的消息。
日志文件中显示的唯一错误
PHP警告:session_start():无法发送会话缓存限制器 - 已在第2行的/login.php中发送的标头(在/login.php:1处开始输出)
使用session_destroy或将会话索引定义为空白
使用以下内容。它会破坏会话
session_start();
session_unset();
session_destroy();
header('location:your-desired-location.php');