【问题标题】:Can a browser store two different sets of SESSION variables at the same time?浏览器可以同时存储两组不同的 SESSION 变量吗?
【发布时间】:2015-10-29 15:25:05
【问题描述】:

在我正在开发的健身网站上,我使用 php $_SESSION 在我的页面使用的各种 php 脚本中调用用户的用户名。

我在 Chrome 中打开了一个标签,该标签登录到我正在开发的健身网站上的一个测试用户帐户。

由于我想在另一个用户帐户上测试 更新 BMI 功能,我打开了第二个选项卡并登录到另一个 testuser 帐户。该功能成功运行,我的第二个用户 BMI 已在数据库中更新。

但是,当我返回第一个选项卡并为我的第一个用户尝试该功能时,它更新了第二个用户的 BMI,而不是第一个用户。这立即让我感到震惊。我刷新了页面并意识到我现在实际上已登录到第二个 testuser 帐户。

这一定是因为浏览器不能存储两组不同的会话变量。无论如何允许浏览器这样做吗?

【问题讨论】:

  • 是的,使用隐身标签或类似标签
  • 您可以打开新的“匿名窗口”并在那里使用其他会话
  • 不,我不这么认为。浏览器使用domain 创建cookie,因此如果该会话cookie 被更改,它也会在浏览器中更新。浏览器不支持多个会话。

标签: php session-variables


【解决方案1】:

会话变量为 1。

$_SESSION['user'] = 1;

所以在整个网站中,用户的价值是 1。

现在如果你改变值,

$_SESSION['user'] = 2;

整个网站在会话中的用户价值为 2。

你遇到了这个问题,因为你没有刷新页面。

同一个浏览器中的同一个变量不能有多个值,但在不同的浏览器中是可以的。

因此,同一会话变量的 2 组值在同一浏览器中是不可能的。

工作:

创建的每个会话都有一个唯一的 id ,并且该唯一的 id 存储在 cookie 中。 Cookies 反过来存储在浏览器中。每次您向服务器发出会话变量请求时,它都会在 cookie 中查找会话 ID。

希望这对您有所帮助。有什么疑问可以问。

【讨论】:

  • 但浏览器总是有cookies,会话ID存储在其中。因此,当我们访问会话变量时,服务器会在 cookie 中查找会话 ID。 Cookie r 存储在浏览器中。因此我们不能有多个值。
【解决方案2】:

浏览器一次只能处理一个会话。

但是,您可以打开另一个浏览器或使用私人会话 (Ctrl+Maj+P) 来测试另一个会话,而不会丢失第一个会话。

【讨论】:

    猜你喜欢
    • 2011-08-04
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 2011-04-20
    • 2020-11-01
    • 2012-11-10
    • 2021-02-16
    • 2010-09-23
    相关资源
    最近更新 更多