【问题标题】:Some of users lose session info in my website (PHP). How can i prevent this?一些用户在我的网站 (PHP) 中丢失了会话信息。我怎样才能防止这种情况?
【发布时间】:2010-09-02 20:43:07
【问题描述】:

在我的网站上,有些用户抱怨登录时出现问题。

他们的浏览器通常看不到会话信息并且无法理解用户已登录,并且表现得就像从未登录过一样。但是经过一些刷新后,浏览器会看到会话信息并显示用户正常登录。同样,如果用户尝试执行某些操作(例如写消息),浏览器会再次丢失会话信息并重定向到登录页面。情况就这样继续下去。

浏览器安全选项,用户电脑的cookie选项都和我的一样。

我从来没有遇到过这样的问题,但他们确实遇到过。

我怎样才能解决这个问题,实际上我怎样才能看到、理解这个问题?

谢谢。

【问题讨论】:

  • 只是猜测,但超时呢?
  • 没有代码,我们只能猜测。您可能必须在受影响的系统上进行一些调试。也许您的会话系统对客户端的 IP 更改很敏感?
  • 超时时间足够长,大多数用户没有发现任何问题。只是一些用户......
  • Pekka,用户在其他城市,我尝试在手机上进行调试,但几乎不可能:) 你们提供什么调试技术?以及如何跟踪客户的IP变化?
  • @teofte 您可以考虑使用 VNC 之类的远程控制工具登录他们的桌面,或者尝试尽可能接近地复制用户的环境 - 操作系统、浏览器、互联网连接类型......关于 IP 更改,您必须查看您的代码以查看如果 IP 更改,会话是否会中断。

标签: php session cookies login


【解决方案1】:

由于您似乎无法重现该问题,并且可能无法使用他们的机器,您可能会让他们运行类似Fiddler(即)、Firebug(firefox)等的东西,然后将日志发送给您。

正如 gavtaylor 所建议的,我会怀疑负载平衡器、代理或其他。

【讨论】:

  • 感谢您纠正 AlexV。它不会让我(正确地)添加两个链接,因为它给了我一些关于垃圾邮件可能性的错误(我想是因为我刚刚开始在这里 - 提供一些答案)。 /耸肩
【解决方案2】:

通常的配方是:

  • 尝试重现问题
  • 如果失败,请添加更多日志记录
  • 如果还是不清楚,那就调试代码

假设第一个失败了,那么你可能想启动loggingsession cookie的值

从表面上看,这听起来像是一个缓存问题。

【讨论】:

    【解决方案3】:

    您的服务器负载均衡吗? 我最近遇到了这个问题,我们的一个旧网站的用户暂时“丢失”了他们的登录状态。

    我们发现负载平衡器没有正确实现粘性会话,因此人们在服务器之间跳转,并且由于该站点使用的是服务器会话而不是数据库会话,因此人们实际上在一台服务器上注销但在另一台服务器上登录。 ..

    【讨论】:

    • 粘性会话很糟糕 - 它们完全破坏了使用负载均衡器的 HA 原因
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2021-06-17
    相关资源
    最近更新 更多