需要在会话过期或浏览器关闭Codeigniter时更新数据库

时间:2015-04-14 04:27:01

标签: codeigniter session-timeout

我有' 用户'有' is_login '柱。当用户登录时,' is_login 更改为1'当注销' is_login 更改为0'。

但是,如果用户关闭了浏览器,则 is_login '专栏保持1。

我需要一种方法来更新数据库,当会话到期时关闭浏览器。

我试过这个但没做过: How to exec a function when codeigniter session expires

我也对其他建议持开放态度。

1 个答案:

答案 0 :(得分:0)

当浏览器关闭时,您需要使用一些javascript / jQuery来对应用程序中的脚本进行AJAX调用,该脚本可以将登录标志设置为0.使用jQuery

$( window ).unload(function() {
  $.post('location/of/your/script.php',{'identifier':'identifier_val'});
});

然后在script.php中挑选你发布的任何内容并对其采取行动。

这在我的经验中是非常不可靠的,对用户来说并不是很好的体验,因为如果他们重新加载页面,这将会触发。另一种(同样令人讨厌的)方式是使用心跳方法。基本上你的jQuery需要每分钟ping你的服务器。然后你将运行一个CRON作业来检查任何没有从jQuery获取ping的用户记录超过2分钟(或者你认为是正确的),并将这些用户设置为注销。

否则,您需要打开与服务器的套接字连接,这是正确的方法。