$ _SESSION到期后,在数据库上写入LOG

时间:2013-05-29 01:00:00

标签: php session logout

在我的database我有一个名为LOG的表,每次用户成功登录时我都会写一行。

当用户log-out发生同样的事情,但如果页面logout.php没有完成注销,那么$_SESSION到期后,就不会在日志上写入日志database

每次LOG到期时如何避免或自动写$_SESSION

3 个答案:

答案 0 :(得分:1)

这样做通常很痛苦:PHP根本不会以任何有意义的方式公开会话到期。

但是,通常PHP会安装一个cron作业来使会话过期(在我的Linux服务器中它是/etc/cron.d/php5):不知道你是怎么做的,但你可能会修改系统上的等效脚本来打开将要删除的日志文件,然后将其身份发送到日志数据库。

答案 1 :(得分:1)

您可以实施自己的session save handler。您希望在保存处理程序的destroy和GC方法中处理此问题。

答案 2 :(得分:0)

嗯,会话到期是在浏览器上完成的,它根本不涉及服务器,因此会话过期无法与服务器通信并导致写入数据库。

也就是说,有办法回到你想要的东西。如果您知道cookie将在客户端浏览器上存在多长时间,并且您记录了刷新开始时间的最后一次站点访问,则可以检查早于超时的所有访问。

如果会话仍然适用于浏览器会话,那么您就是SOL。只记录访问时间并推断其余时间。