0

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

同样的事情发生在用户时log-out,但是如果注销不是由页面完成的,logout.php那么一旦$_SESSION过期,就不会在database.

如何避免这种情况或LOG每次$_SESSION到期时自动写入?

4

3 回答 3

1

您可以实现自己的会话保存处理程序。您想在保存处理程序的销毁和 GC 方法中处理这个问题。

于 2013-05-29T01:21:36.910 回答
1

这样做通常相当痛苦:PHP 根本没有真正以任何有意义的方式公开会话到期。

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

于 2013-05-29T01:11:39.090 回答
0

好吧,会话到期完全在浏览器上处理,它根本不涉及服务器,因此会话到期无法与服务器通信并导致写入数据库。

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

如果会话存在于浏览器会话中,那么您就是 SOL。只需记录访问时间并推断其余时间。

于 2013-05-29T01:13:37.713 回答