Php 一旦$\u会话过期,就在数据库上写入日志

Php 一旦$\u会话过期,就在数据库上写入日志,php,session,logout,Php,Session,Logout,在我的数据库中有一个名为LOG的表,每当用户成功登录时,我都会在其中写入一行 当用户注销时也会发生同样的情况,但是如果注销不是由页面logout.php完成的,那么一旦$\u会话过期,将不会在数据库上写入日志 如何避免这种情况,或者在每次$\u会话过期时自动编写日志?这样做通常是相当痛苦的:PHP根本没有以任何有意义的方式公开会话过期 但是,通常PHP会安装一个cron作业来终止会话(在我的Linux服务器上是/etc/cron.d/php5):不知道该怎么做,但可以修改系统上的等效脚本来打开即

在我的
数据库中
有一个名为
LOG
的表,每当用户成功登录时,我都会在其中写入一行

当用户注销时也会发生同样的情况,但是如果注销不是由页面
logout.php
完成的,那么一旦
$\u会话
过期,将不会在
数据库
上写入日志


如何避免这种情况,或者在每次
$\u会话
过期时自动编写
日志?

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


但是,通常PHP会安装一个cron作业来终止会话(在我的Linux服务器上是
/etc/cron.d/php5
):不知道该怎么做,但可以修改系统上的等效脚本来打开即将删除的日志文件,然后将它们的标识发送到日志数据库。

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

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


如果该会话用于浏览器会话,则您是SOL。只需记录访问时间并推断其余时间。

您可以实现自己的访问时间。您希望在save处理程序的destroy和GC方法中处理此问题。

如果不能,您可以运行cron作业,为那些未通过logout.php的用户填写数据。或者我们中的大多数人只是留白并理解这意味着什么。严格来说,这不是真的,会话是服务器端,而不是客户端。会话数据是服务器端。会话cookie(作为cookie)是客户端的。我以为我们谈论的是cookie,而不是服务器上数据本身的生命周期,但我可能弄错了。如果您谈论的是数据的过期,那么您可以通过查看session.gc_maxlife的ini值来访问超时,然后以这种方式返回到它。。。请注意,如果登录尚未被垃圾收集,您应该能够“恢复”登录。会话可以在没有cookie的情况下存在,因此,当会话存在时,如果使用没有cookie的会话是一个安全漏洞,我永远不会推断出cookie的存在,我假设有责任心的开发人员不会这样做,除非他们已经指定了。解释一下它如何比cookie更安全,cookie也可以由用户编辑,并通过与网页相同的协议传输。我想我会避免写注销日志!