0

我有一个用户门户帐户。我在两个不同的选项卡中使用两个不同的用户名登录它。

当我(ctl+f5)在同一用户帐户的两个选项卡中进行硬刷新时,它会在两个选项卡中打开。这可以是这两个中的任何用户名。我能做些什么来解决这个问题?

4

3 回答 3

2

Session's mechanism uses COOKIEs. COOKIEs are shared between tabs.

If you what to login with one browser session by two differnet users you can disable storing session id in cookie: PHP session without cookies.

Also you can use feature of browsers. FireFox's Private browsing for example.

于 2013-04-12T05:30:20.147 回答
1

您无法使用两个不同的用户在同一浏览器上登录同一网站。最好使用两种不同的浏览器。

于 2013-04-12T05:29:40.467 回答
0

一种选择是避免会话 cookie。将 PHPSESSID 变量添加到查询字符串中,或​​者将其放在路径中并使用 URL 重写或 PATH_INFO 将/x/y.php/925235a...等转换为/x/y.php?PHPSESSID=925235a.... 你实际上可以告诉 PHP 为你做第一个。

请注意,为了使其正常工作,您需要说类似

ini_set('session.use_cookies', false);

或类似的,在您的脚本中调用session_start(). 那么 PHP 将不会发送会话 cookie;在大多数情况下,它只会透明地重写您页面中的 URL 以包含会话 ID,因此您可以免费获得第一个选项。

这种方法的最大缺点是它使您的用户容易受到称为“会话固定”的攻击。如果我给您一个已经有会话 ID 的 URL,然后您单击它并登录到该站点,那么您已经为我登录了我的会话,我现在可以像您一样访问该站点。解决此问题的一种方法是在有人登录时切换到新会话……但如果您的应用是购物车,那么让人们登录购买东西可能会很烦人。

第二大:如果用户点击没有会话 ID 的链接,PHP 将无法识别他们。(用户可以使用“返回”按钮返回到他们拥有会话 ID 的位置,但这在可用性方面很糟糕。)您必须确保会话 ID 出现在每个链接或 URL 中。幸运的是,PHP 会为您重写其中的大部分,但是您使用 JS 等生成的任何链接都必须自己完成。

于 2013-04-12T05:43:07.020 回答