【问题标题】:Prevent more than one session from overwriting each other on the same website in PHP防止多个会话在 PHP 中的同一网站上相互覆盖
【发布时间】:2018-07-31 04:48:51
【问题描述】:

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

【问题讨论】:

  • 2 个用户如何使用同一台计算机、同一个浏览器、同时在 2 个不同的选项卡中访问同一个网站?我认为这是您不应该在服务器端打扰自己的情况

标签: php


【解决方案1】:

你不能。

使用会话 cookie 识别会话,单个浏览器实例将跨选项卡共享 cookie(隐身/私人/等除外)。

【讨论】:

  • 这个问题有解决办法吗?
  • 是的,让他们在同一台计算机上使用不同的计算机、不同的浏览器,或者一次使用一个。
【解决方案2】:

我能想出的唯一解决方法是使用您可以告诉浏览器仅在特定位置使用 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");

现在用户 1 在他的仪表板上 /dashboard/user1 将发送不同于用户 2 在他的仪表板上 /dashboard/user2 的 cookie 值

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

我不会这样做,因为它的怪异和复杂的副作用,我只是写它以防你真的需要它。会话是建立在 cookie 之上的,而 cookie 的设计目的不是让 2 个不同的用户同时使用同一个浏览器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 2023-02-03
    • 1970-01-01
    • 2012-01-22
    • 2016-10-16
    • 2020-03-13
    • 1970-01-01
    相关资源
    最近更新 更多