应用程序上的多个会话无意中共享

时间:2014-11-30 19:52:38

标签: php session

我的项目有三个文件夹,学生教师管理员

每个人都有一个登录页面,在有效时启动会话,然后重定向到index.php。并且每个人都有 logout.php ,它们会破坏会话,然后重定向到 login.php

我的问题是什么?

如果我登录学生,然后打开教师管理员,我将登录这些服务。如果我退出其中一个,我将退出所有这些。

如何让这些会话“单独”运作?

2 个答案:

答案 0 :(得分:0)

您可以为每个会话命名并销毁特定会话。

使用session_name()unset(),您可以获得所需的结果。

因此session_name('teacher')会为教师帐户注册会话。

要销毁该特定会话,请使用unset($_SESSION['teacher'])


一些例子

一些初始化文件或全局文件..

session_name('teacher');
session_start();

在logout.php中,可能会传递一个cookie或查询字符串来标识要取消的会话

unset($_SESSION['teacher']);

答案 1 :(得分:0)

虽然从安全角度来看,注销事件理论上应该清除会话中的所有用户数据,但您也可以通过对模块进行分类来避免它。

如果您将会话变量映射为此类..

$_SESSION = array (
                    'student' => array(..),
                    'teacher' => array(..),
                    'admin'   => array(..),
);

您可以简单地取消设置()$ _SESSION [..]中的一个或多个以清除特定模块。您还可以通过检查$ _SERVER [' HTTP_REFERER']变量来确定点击了哪个退出链接。希望能帮助到你。