在我的database
我有一个名为LOG
的表,每次用户成功登录时我都会写一行。
当用户log-out
发生同样的事情,但如果页面logout.php
没有完成注销,那么$_SESSION
到期后,就不会在日志上写入日志database
。
每次LOG
到期时如何避免或自动写$_SESSION
?
答案 0 :(得分:1)
这样做通常很痛苦:PHP根本不会以任何有意义的方式公开会话到期。
但是,通常PHP会安装一个cron作业来使会话过期(在我的Linux服务器中它是/etc/cron.d/php5
):不知道你是怎么做的,但你可能会修改系统上的等效脚本来打开将要删除的日志文件,然后将其身份发送到日志数据库。
答案 1 :(得分:1)
您可以实施自己的session save handler。您希望在保存处理程序的destroy和GC方法中处理此问题。
答案 2 :(得分:0)
嗯,会话到期是在浏览器上完成的,它根本不涉及服务器,因此会话过期无法与服务器通信并导致写入数据库。
也就是说,有办法回到你想要的东西。如果您知道cookie将在客户端浏览器上存在多长时间,并且您记录了刷新开始时间的最后一次站点访问,则可以检查早于超时的所有访问。
如果会话仍然适用于浏览器会话,那么您就是SOL。只记录访问时间并推断其余时间。