Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
每当我重新加载页面时,仍然会设置取消设置PHP会话变量_Php_Session_Unset - Fatal编程技术网

每当我重新加载页面时,仍然会设置取消设置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应检查是否设置了此会话,然后显示错误消

我的问题是,当我取消设置会话变量,然后重新加载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_start();
session_unset();
session_destroy();
header('location:your-desired-location.php');

我尝试了销毁会话而不是取消设置,但仍然没有销毁会话。但是,我在日志“会话\u销毁():尝试销毁未初始化的会话”中遇到此错误。错误消息表明,在调用
session\u start()
之前,您有一些输出。首先移动
session\u start()
,然后再进行任何输出(包括换行符/空格等)。旁注:您不需要同时使用
isset()
!empty()
处于相同的if条件。只要有
!空()。第#1行开始的输出表示您在
之前有一些内容,请参阅以获取有关在
会话_start()之前删除输出的提示。如果仍然出现相同的错误,则在
OP想要取消设置一个会话变量,而不是取消整个会话之前,您可能有一个空格或换行符