我的项目有三个文件夹,学生,教师,管理员。
每个人都有一个登录页面,在有效时启动会话,然后重定向到index.php。并且每个人都有 logout.php ,它们会破坏会话,然后重定向到 login.php 。
我的问题是什么?
如果我登录学生,然后打开教师或管理员,我将登录这些服务。如果我退出其中一个,我将退出所有这些。
如何让这些会话“单独”运作?
答案 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']变量来确定点击了哪个退出链接。希望能帮助到你。