返回

php——会话信息在 Chrome 中丢失(但在其他浏览器中有效)

发布时间:2022-04-27 19:35:35 235
# 后端

这可能与仅在 Chrome中丢失的会话数​​据相同,并且与仅在 Google Chrome 和 URL 重写中随机丢失会话变量有关

那里没有适合我的解决方案,我希望有人对此有一些新的投入。

这些是我遵循的步骤:

  1. 我使用初始化会话(而不是cookie)然后在同一个php文件中使用$_SESSION['nu'] = $userName;

  2. 然后我重定向到一个带有window.location.href = "foo.php"。该php文件启动会话(第一件事,同上),然后使用$_session['nu']。到目前为止,所有浏览器都可以正常工作。

  3. 在Chrome(31.0.1650.26 beta)上的第二个php页面(第2步中的页面)上:

    • 我可以在通过AJAX调用访问的php文件中使用$_SESSION['nu']。
    • 如果我重新加载页面,$_SESSION['nu']将不再设置。第一次加载之后,它就没有设置。
    • 如果我转到另一个也需要$_SESSION['nu']的页面,它也无法访问它。
  4. 在Safari(5.1.9和5.1.7)和Firefox(24.0和18.0)上,我可以重新加载并转到另一个页面,$_SESSION['nu']已设置,一切正常。

  5. 当我在我的家庭环境(MAMP 1.9.6)上测试时,它在Chrome上也可以正常工作。

  6. 在这两种php中.ini文件(家庭和在线)会话中session.use_only_cookies 是 On (本地和主)。

因为我可以通过AJAX(不改变页面)访问它,所以在进入新页面时,Chrome似乎会遇到会话问题。但是为什么它第一次起作用呢?我确实会换页......

我试过favicon.ico 解决方案(我在web根目录中放置了一个名为favicon.ico的图标文件),但它没有改变任何东西。

有什么建议么?谢谢!

更新

所有试图访问 $_SESSION['nu'] 的 php 文件都位于根目录('my' 根目录,因为我使用的是网络酒店)。

查看 Chrome 的控制台,进入“资源 - > Cookies”,我可以看到 cookie 一直存在(当我从启动会话的 php 文件移动到 foo.php 时)。

令我难以置信的是它在 FF 和 Safari 中工作......

更新2

来自控制台的图像。这是我在 foo.php (第二页)中看到的内容:

铬合金:

enter image description here

游猎:

enter image description here

解决方案(希望如此): 我不确定为什么它现在可以工作,这让我不太舒服,但是,暂时......为了解释发生了什么,我需要提供更多细节:

index.php 调用 start_session()。设置变量 $_SESSION['nu'] = Null。然后页面等待登录按钮被点击。

登录按钮有一个脚本,它通过 AJAX 调用 singIn.php,它调用 start_session() 并设置 $_SESSION['nu'] = "bar"。在 AJAX 调用的 done() 函数中,脚本调用 window.location.href = "foo.php"。

foo.php 调用 session_start() 并检索 $_SESSION['nu']。

在我的 try-anything-mode 中,我测试了从 index.php 中删除 start_session()。我还删除了分配 $_SESSION['nu'] = Null。我希望它们到位,以确保访问 index.php 将清除会话并事实上注销用户。但是该网站确实有一个适当的注销选项,所以我可以坚持下去。

如果没有 index.php 中的这些行,它似乎可以在 Chrome 中运行。也就是说,当用户浏览站点中的其他页面或重新加载 foo.php 时,$_SESSION['nu'] 的值不会丢失。

正如我之前所说,这在 FF 和 Safari 中一直有效。现在也在 Chrome 中。如果有人能找到解释,我会很感激!

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(2)
按点赞数排序
用户头像