2

当我尝试注销时: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 } ?>

这是您需要的信息(我认为)。如果您需要更多,请问我。

所以,我在简短版本中的问题是:如何在不破坏购物车会话的情况下销毁会话?

多谢你们。

4

3 回答 3

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');
}

?>
于 2013-10-10T18:11:35.547 回答
1

有没有可能,您刚刚忘记了session_start();注销脚本中的函数调用?

<?php
session_start();

unset($_SESSION['username']);
unset($_SESSION['id']);

header('Location: index?page=home');
于 2013-10-10T17:54:48.727 回答
0

in easiest way use

<?php
session_start();
if(empty($_SESSION['user']) && empty($_SESSION['id']))
{
echo "please login";

}

and unset use to unset the variable and session_destroy for destroy session completly, so i suggest you should use both as:

<?php
session_start();
unset($_SESSION['user']);
unset($_SESSION['id']);
session_destroy();
header("location:yourpage.com");
?>
于 2013-10-10T18:00:24.290 回答