当我尝试使用session_destroy();
注销时,它就可以了。但问题是,我还有一个带有会话的购物车。所以session_destroy();
对我来说不是一个选择。当我使用unset($_SESSION['username']);
功能时,它似乎正常工作。但是当我回到我的帐户页面时,我刚刚重新登录。我的注销脚本如下所示:
<?php
unset($_SESSION['username']);
unset($_SESSION['id']);
header('Location: index?page=home');
?>
我检查了用户的这段代码已登录。(有人可以告诉我或者这是安全的吗?)
<?php if (!$_SESSION['username'] && !$_SESSION['id']){ ?>
<?php header ('Location: index?page=home'); ?>
<?php } ?>
这是您需要的信息(我认为)。如果您需要更多,请问我。
所以,我的简短版本中的问题:如何在不破坏我的购物车会话的情况下销毁我的会话?
谢谢你们。
答案 0 :(得分:4)
你能在这里试试session_write_close()
吗?有一个PHP配置,应该在脚本结束后自动为您执行此操作,但您的PHP可能配置不同。
<?php
unset($_SESSION['username']);
unset($_SESSION['id']);
session_write_close();
header('Location: index?page=home');
?>
为了调试你可以试试这个:
<?php
echo $_SESSION['id'].' - '.$_SESSION['username'];
if(!$_SESSION['username'] && !$_SESSION['id']){
header ('Location: index?page=home');
}
?>
答案 1 :(得分:1)
您可能忘记了注销脚本中的session_start();
函数调用吗?
<?php
session_start();
unset($_SESSION['username']);
unset($_SESSION['id']);
header('Location: index?page=home');
答案 2 :(得分:0)
以最简单的方式使用
<?php
session_start();
if(empty($_SESSION['user']) && empty($_SESSION['id']))
{
echo "please login";
}
和unset
用于取消设置变量和session_destroy
完全破坏会话,所以我建议你应该同时使用它们:
<?php
session_start();
unset($_SESSION['user']);
unset($_SESSION['id']);
session_destroy();
header("location:yourpage.com");
?>