PHP session 未设置或 PHP session 销毁

标签 php session authentication logout

当我尝试使用以下方法注销时:session_destroy(); 然后它就起作用了。但问题是,我还有一个带有 session 的购物车。所以 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 } ?>

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

所以,我的问题是简短的:如何在不破坏购物车 session 的情况下破坏我的 session ?

谢谢大家。

最佳答案

你可以在这里尝试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');
}

?>

关于PHP session 未设置或 PHP session 销毁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19302775/

相关文章:

java - Linksys 路由器 Web 管理 - 在 .NET 中自动登录

php - 使用 bcrypt 登录表单 sleep()

javascript - 稍后存储大型 JSON 流水线请求

php - 我可以使用其中一个场景作为我的元步骤而不是在 Context 类中定义它吗?

java - 跨方法的 Hibernate session 和事务

spring - Spring 中的 "SessionManagementFilter - Requested session ID XXX is invalid"是什么?

php - Laravel 5.3 LoginController - 标题可能不包含多个标题,检测到新行

PHP 使用 SSL 连接到 MS SQL

php - 提交php表单后如何显示结果

linux - 如何附加到幽灵 screen session ?