我有一个用户报告他们在下午6:45(当时)附近被注销。我的会话到期时间是24小时,他们提前8小时登录。
就像测试一样,我将sess_time_to_update设置为PHP_INT_MAX
,因为它们是一个已知的错误,会导致会话注销在转动会话时。
我唯一能想到的就是Firefox能够恢复以前的标签。这实际上即使在浏览器关闭后也会恢复会话cookie。
她说这也发生在Internet Explorer中...我无法在IE 11中找到设置,以便在浏览器关闭后保留会话cookie。
您是否有任何想法可能导致此问题或想要调查的内容?
编辑:这发生在另一个客户端。它只在几天内发生,并且不会发生在不同位置的用户身上。我能做些什么来确定这是怎么回事?答案 0 :(得分:2)
尝试在几种不同的浏览器中测试它,看看它是否还在发生。 如果是,可能:
如果他们在相似的时间继续退出,请尝试解决当时可能发生在服务器或本地方面的任何问题。恢复标签(带有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_users
和ion_auth.php
指令。
希望它有所帮助。