Php 会话销毁错误

Php 会话销毁错误,php,Php,我试图在单击注销时销毁会话,但这不起作用 <?php session_start(); if(isset($_SESSION['user_name'])) { session_destroy(); session_unset(); header('Location:Login2.php'); } else { echo "error"; } ?> 它进入else部分意味着显示错误。您有许多不需要的代码。例如,您的注销链接只有

我试图在单击注销时销毁会话,但这不起作用

<?php
session_start();
if(isset($_SESSION['user_name']))
{ 
   session_destroy();   
   session_unset();     
   header('Location:Login2.php');
 }
 else
 {
    echo "error";
 }
 ?>


它进入else部分意味着显示错误。

您有许多不需要的代码。例如,您的注销链接只有在用户实际正确登录时才会显示,因此
if-else
语句中没有任何意义

将其缩短为:

<?php

session_start();
session_destroy();
header('Location:Login2.php');

?>


我的意思是,如果您打算破坏会话,那么检查用户是否登录就没有意义了。如果用户未登录,并且他以某种方式访问了该路径,那么该路径将指向该脚本。实际上,什么也没有发生。但是,如果他登录,您就不应该关心会话变量是否已设置,因为您无论如何都要销毁它

调用
session\u destroy()
会使
session\u unset()
的需要重复且不必要。在
header()
之后也调用
die()
,否则其他所有操作都会继续执行,重定向失败

<?php
session_start();
if(isset($_SESSION['user_name']))
{ 
   session_destroy();   
   header('Location: Login2.php');
   die();
}
else
{
   echo "error";
}
?>

仍然存在大量冗余逻辑和代码,因此这里是最佳解决方案:

logout.php

<?php
session_start();
session_destroy();   
header('Location: Login2.php');
die();
?>


那么
$\u会话['user\u name']
显然没有设置。你检查了
$\u会话['user\u name']
的值吗?@RafaelBarros No....$\u会话['user\u name']的值没有得到..你给出的代码也不起作用。当我单击“上一页”时,它仍在上一页中。你定义了页眉()重定向,因此它会破坏会话并将您带到Login2.php。如果您不希望重定向,则只需删除header()函数。至于这次会议,没有什么是不可能的。