gpt4 book ai didi

php - session 信息在 Chrome 中丢失(但适用于其他浏览器)

转载 作者:行者123 更新时间:2023-12-03 17:51:55 25 4
gpt4 key购买 nike

这可能是与 Session data lost in Chrome only 相同的问题和相关 Randomly Losing Session Variables Only In Google Chrome & URL Rewriting

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

这些是我遵循的步骤:

  • 我使用 <?php session_start();?> 初始化 session (不是 cookie)然后稍后在同一个 php 文件中使用 $_SESSION['nu'] = $userName; 设置变量
  • 然后我重定向到一个新的 php window.location.href = "foo.php" .该 php 文件启动 session (第一件事,同上),然后使用 $_SESSION['nu']。到目前为止,在所有浏览器中一切正常。
  • 在 Chrome (31.0.1650.26 beta) 上的第二个 php 页面(第 2 步中的页面)上:
  • 我可以在通过 AJAX 调用访问的 php 文件中使用 $_SESSION['nu'] 。
  • 如果我重新加载页面,则不再设置 $_SESSION['nu']。第一次加载后,它没有设置。
  • 如果我转到另一个也需要 $_SESSION['nu'] 的页面,它也无法访问它。
  • 在 Safari(5.1.9 和 5.1.7)和 Firefox(24.0 和 18.0)上,我可以重新加载并转到另一个页面,设置了 $_SESSION['nu'] 并且一切正常。
  • 当我在我的家庭环境 (MAMP 1.9.6) 上测试它时,它在 Chrome 上也能正常工作。
  • 在 php.ini 文件(家庭和在线)中 session.use_only_cookies 是 On(本地和主)。

  • 由于我可以通过 AJAX 访问它(不更改页面),因此在转到新页面时 Chrome 的 session 似乎有问题。但是为什么它第一次起作用呢?我确实换页...

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

    有什么建议?谢谢!

    更新
  • 所有试图访问 $_SESSION['nu'] 的 php 文件都位于根目录中(“我的”根目录,因为我使用的是网络旅馆)。
  • 查看 Chrome 的控制台,进入“资源 -> Cookies”,我可以看到 cookie 一直存在(当我从启动 session 的 php 文件移动到 foo.php 时)。
  • 令我难以置信的是它适用于 FF 和 Safari...

  • 更新 2

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

    Chrome 合金:

    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 会清理 session 并事实上注销用户。但是该站点确实有一个适当的注销选项,所以我可以坚持下去。

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

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

    最佳答案

    我遇到了类似的问题:在页面呈现后很短的时间内 cookie 已被清除(有时,并非总是)。原因是在页面渲染过程中多次调用内部API,其中有session_start();里面。

    从 API 中删除 session_start() 解决了问题。

    问题出在 Chrome 和 Firefox 上,Safari 运行没有问题。

    关于php - session 信息在 Chrome 中丢失(但适用于其他浏览器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19491277/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com