会话销毁错误

时间:2013-10-15 16:50:03

标签: php

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

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

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

2 个答案:

答案 0 :(得分:1)

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

将其简化为:

<?php

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

?>

我的意思是,如果你要破坏会话,那么检查天气是否真的没有意义,或者没有用户登录。让我们说如果用户没有登录,路径http://yourdomain.com/logout.php会很好地导致这个脚本。以某种方式访问​​这条路径并没有真正发生但是如果他已经登录你真的不应该关心SESSION变量是否已设置,因为无论如何你都要破坏它。

答案 1 :(得分:0)

调用session_destroy()需要session_unset()重复且不必要。也请在die()之后调用header(),否则其他所有内容仍会被执行,重定向也会失败。

<?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();
?>