防止多个会话在同一网站上用PHP相互覆盖

时间:2018-07-30 18:39:59

标签: php

当我有两个不同的用户登录到特定站点时,我需要更多有关PHP会话的信息,例如,说说他们的仪表板或帐户(例如:https://www.myspace.com/admin/dashboard)在同一浏览器的单独选项卡中,会话会覆盖另一个会话,我该如何防止这种情况发生。

2 个答案:

答案 0 :(得分:1)

你不能。

使用会话cookie标识会话,并且单个浏览器实例将跨选项卡共享cookie(除了Incognito / Private / etc外)。

答案 1 :(得分:0)

我只能提出的唯一解决方法是,您可以告诉浏览器仅在特定位置使用cookie。

//when user1 visits, set custom session cookie works on his private url
setcookie("sessionId", $sessionTocken1, time() + 3600, "/dashboard/user1"); 

//when user2 visits, set custom session cookie works on his private url
setcookie("sessionId", $sessionTocken2, time() + 3600, "/dashboard/user2");

现在,位于/dashboard/user1的仪表板上的user1将发送与位于/dashboard/user2的仪表板上的user2不同的cookie值

请注意,这样做必须在服务器端管理自定义会话系统,而不是PHP的$_SESSION内置系统。

由于它的怪异和复杂的副作用,我不会这样做,我只是写了它,以防万一您确实需要它。会话基于cookie建立,并且cookie并非设计为同时使用同一浏览器的2个不同用户使用。