我试图在点击注销时销毁会话,但这不起作用。
<?php
session_start();
if(isset($_SESSION['user_name']))
{
session_destroy();
session_unset();
header('Location:Login2.php');
}
else
{
echo "error";
}
?>
它进入其他部分意味着显示错误。
答案 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();
?>