在php会话超时时执行一些事件

时间:2015-02-20 06:21:34

标签: php codeigniter session timeout onbeforeunload

我用jquery'onbeforeunload'尝试了它,但是因为jquery甚至在刷新页面上做了那个动作也失败了。 我想要做的就是,在任何用户关闭他的浏览器或计算机之前执行数据库功能。所以我可以知道他已经注销了。我想添加类似于“从其他设备登录”的功能,强有力的注销来自其他设备。

2 个答案:

答案 0 :(得分:4)

无法在JavaScript中捕获浏览器关闭事件。您可以尝试使用Web套接字和CRON作业来实现您的需求。

对于Web套接字,您可以获取特定用户的总连接数,如果连接数为0,则表示用户已关闭Web应用程序的所有页面(窗口或选项卡)。此外,您需要牢记互联网断开连接,因此,您需要使用CRON作业,此CRON作业必须每隔特定时间运行一次(例如:15分钟),这样如果用户丢失连接15分钟,您必须自动注销该用户。

如果您没有规则,例如用户必须在闲置几分钟后断开连接,那么您只需使用网络套接字即可。

答案 1 :(得分:1)

在system / libraries / session中你会找到这一行

// Is the session current?
if (($session['last_activity'] + $this->sess_expiration) < $this->now)
{
    $this->sess_destroy();
    return FALSE;
}

你可以做任何事情。