每当我重新加载页面时,仍然会设置取消设置PHP会话变量
我的问题是,当我取消设置会话变量,然后重新加载login.php时,会话变量仍然被设置 以下是我想做的: 我试图通过reset.php中设置的会话变量发送错误消息每当我重新加载页面时,仍然会设置取消设置PHP会话变量,php,session,unset,Php,Session,Unset,我的问题是,当我取消设置会话变量,然后重新加载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();
$_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_start();
session_unset();
session_destroy();
header('location:your-desired-location.php');
我尝试了销毁会话而不是取消设置,但仍然没有销毁会话。但是,我在日志“会话\u销毁():尝试销毁未初始化的会话”中遇到此错误。错误消息表明,在调用
session\u start()
之前,您有一些输出。首先移动session\u start()
,然后再进行任何输出(包括换行符/空格等)。旁注:您不需要同时使用isset()
和!empty()
处于相同的if条件。只要有!空()。第#1行开始的输出表示您在之前有一些内容,请参阅以获取有关在会话_start()之前删除输出的提示。如果仍然出现相同的错误,则在OP想要取消设置一个会话变量,而不是取消整个会话之前,您可能有一个空格或换行符