Php 无意中共享应用程序上的多个会话
我的项目中有三个文件夹,学生,教师,管理员 它们中的每一个都有一个登录页面,该页面在有效时启动会话,然后重定向到index.php。它们中的每一个都有logout.php,它会破坏会话,然后重定向到login.php 我有什么问题? 如果我登录到学生,然后打开教师或管理员,我将登录这些服务。如果我注销其中一个,我将注销所有的Php 无意中共享应用程序上的多个会话,php,session,Php,Session,我的项目中有三个文件夹,学生,教师,管理员 它们中的每一个都有一个登录页面,该页面在有效时启动会话,然后重定向到index.php。它们中的每一个都有logout.php,它会破坏会话,然后重定向到login.php 我有什么问题? 如果我登录到学生,然后打开教师或管理员,我将登录这些服务。如果我注销其中一个,我将注销所有的 如何使这些会话“单独”运行?您可以命名每个会话并销毁特定会话 使用session\u name()和unset()可以获得您想要的结果 因此,session\u name(
如何使这些会话“单独”运行?您可以命名每个会话并销毁特定会话 使用
session\u name()
和unset()
可以获得您想要的结果
因此,session\u name('teacher')
将为教师帐户注册一个会话
要销毁该特定会话,请使用unset($\u会话['teacher'])
一些示例 某些初始化文件或全局文件
session_name('teacher');
session_start();
在logout.php中,可能会传递cookie或查询字符串以标识要取消的会话
unset($_SESSION['teacher']);
虽然,从安全性的角度来看,注销事件理论上应该清除会话中的所有用户数据,但您可能可以通过对模块进行分类来避免它 如果您将会话变量映射为如下内容
$_SESSION = array (
'student' => array(..),
'teacher' => array(..),
'admin' => array(..),
);
只需取消设置()一个或多个$\u会话[…]即可清除特定模块。您还可以通过检查$\u SERVER['HTTP\u REFERER']变量来确定单击了哪个注销链接。希望能有帮助 使用
session\u name()
为会话命名并销毁特定会话。所以session_name('teachers')->unset($_session['teachers'])使用类来构建会话,然后给每个会话命名。注销时,不是销毁会话,而是将其强制转换为null并取消设置。若要测试是否已登录,可以对会话使用的实例,以查看它是否是会话类的实例。是的,可以在会话中存储类实例,我已经做了很多年了。在这里看到更多,非常感谢!我应该这样用吗?session_start()代码>会话名称('admin')代码>另外,如何在会话中输入数据?$\u SESSION['login']=$login
上面的代码使用SESSION\u name('admin')无法工作;在启动会话之前声明名称。您可以使用$\u session[]正常处理会话。您可以尝试转储$\会话以查看会话数据。