【问题标题】:How to troubleshoot $_SESSION?如何对 $_SESSION 进行故障排除?
【发布时间】:2017-10-01 22:49:49
【问题描述】:

我的网站出现问题,我似乎无法排除故障。该网站的登录功能正常,但该网站偶尔会注销用户。

步骤: 1. 登录

  1. 使用网站(通常不会立即将您注销)

  2. 点击链接(链接各不相同,似乎并不孤立于特定的一个)

  3. 注销

该网站有一个 60-90 分钟的计时器,应该让人们退出,但由于某种原因,我一直在 5-30 分钟内被启动。 我有一个报告错误的 MySQL_error 函数,但它不报告存在错误(否则我会发布它)。这个错误已经存在了很长一段时间,我根本不知道如何很好地解决它。我将非常感谢任何帮助!

我所有的页面都像这样使用 $_SESSION....

if(isset($_SESSION['user_id'])) { 在此处插入页面编码 }

否则它会注销您。我在多台计算机上都注意到了这种异常,我认为这与我的计算机设置无关。

【问题讨论】:

  • 您是否尝试过启用 php 错误日志并查看它是否抛出任何错误?
  • 你的 php.ini 中session.gc_maxlifetime 的值是多少?你也可以通过phpinfo() 看到它。
  • 我查看了php错误日志,最近几个月没有出现任何错误。但是,以前它会在 header.php 第 1 行抛出错误(实际上只是 )。
  • ishegg 这是你的答案:session.gc_maxlifetime 1440 (local) 1440 (master)
  • 嗯,有你的答案:)。您的会话大约每 24 分钟被销毁一次。您需要修改该值以使其更持久。

标签: php


【解决方案1】:

我曾经遇到过类似的问题(请参阅php $_SESSION variables disappear and reappear randomly)。它表现得好像会话变量会随机消失,有时它们也会在一段时间后重新出现。

我最终能够通过激活会话的严格模式来解决这个问题,将这一行添加到页面顶部,session_start(); 上方:

ini_set('session.use_strict_mode', 0);

【讨论】:

  • Johannes,我将尝试一下 ishegg 的想法,如果这不起作用,我一定会尝试一下你的想法。注销问题相当不稳定,所以除非一切都解决,否则我可能会回到这里。
  • 嘿,Johannes 只是想让您知道您的方法有效,ishegg 也有帮助,但问题不断出现(只是不那么频繁)。所以不确定总体上发生了什么,但多亏了你们两个,它已经解决了。
猜你喜欢
  • 2011-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 2020-11-18
相关资源
最近更新 更多