CodeIgniter随机注销(sess_time_to_update = PHP_INT_MAX)

问题描述 投票:1回答:2

我有一个用户报告他们在下午6:45(当时那个时间)被注销。我的会话到期时间是24小时,他们提前8小时登录。

就像测试一样,我将sess_time_to_update设置为PHP_INT_MAX,因为它们是一个已知的错误,会在会话注销时导致会话注销。

我唯一能想到的就是Firefox能够恢复以前的标签。即使在浏览器关闭后,这实际上也会恢复会话cookie。

她说这也发生在Internet Explorer中...我在IE 11中找不到一个设置来在浏览器关闭后保持会话cookie。

您是否有任何想法可能导致此问题或想要调查什么?

编辑:这发生在另一个客户端。它仅在几天内发生,并且不会发生在不同位置的用户。有什么我可以做的来确定这是怎么回事?

php codeigniter session cookies
2个回答
1
投票

我不确定你是否将会话的实际有效期设置为PHP_INT_MAX。如manual中所述,sess_time_to_update config控制会话类重新生成自身的频率并创建新的会话ID。换句话说,会话详细信息(例如上次活动)的更新频率是多少,而不是过期。

另一方面,有一些配置指令会影响您案例的意外会话到期:

  • sess_expiration:您希望会话持续的秒数。默认值为2小时(7200秒)。如果您希望非过期会话将值设置为零:0。
  • sess_expire_on_close:是否在浏览器窗口关闭时自动使会话过期。

确保这些设置设置正常,然后尝试在您自己的浏览器上重现这种情况,以缩小问题的范围。如果您仍然遇到随机注销,请添加log_message()调用会话库的sess_destroy()以跟踪用户会话破坏,这可能会为您提供有关销毁模式的线索。

如果没有,我认为这将是用户的浏览器或她的机器上类似CCleaner的应用程序擦除cookie。指示她出厂重置其浏览器设置或安装全新的浏览器。

另一件值得注意的事情是,一些CI库如IonAuth有自己的相关配置。如果您使用IonAuth进行身份验证,请查看user_expire配置文件中的remember_usersion_auth.php指令。

希望能帮助到你。


2
投票

尝试在几个不同的浏览器中测试它,看看它是否仍在发生。如果是,可能:

  • 检查是否有任何运行服务器端的cron作业可能会杀死服务器上的会话cookie?
  • 使用像IECookiesView这样的工具来查看哪些cookie,它们何时设置为过期以及是否有任何变化?

如果他们在相似的时间继续注销,请尝试解决当时可能发生在服务器或本地方面的任何问题。恢复选项卡(带有cookie)功能不可能同时随机运行。

我记得在Firefox中看到一个功能清除退出时的所有cookie,他们是否会在那个时候重启?

希望我帮忙。

© www.soinside.com 2019 - 2024. All rights reserved.