CodeIgniter随机注销(sess_time_to_update = PHP_INT_MAX)

时间:2014-05-07 20:27:40

标签: php codeigniter session cookies

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

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

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

她说这也发生在Internet Explorer中...我无法在IE 11中找到设置,以便在浏览器关闭后保留会话cookie。

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

我记得在Firefox中看到一个功能,即在退出时清除所有Cookie,它们会在那个时候重启吗?

希望我帮助过。

答案 1 :(得分:1)

我不确定您是否将会话的实际有效期设置为PHP_INT_MAX。如manual sess_time_to_update 配置中所述,控制会话类重新生成自身的频率并创建新的会话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指令。

希望它有所帮助。