Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
会话过期或浏览器关闭Codeigniter时需要更新数据库_Codeigniter_Session Timeout - Fatal编程技术网

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

会话过期或浏览器关闭Codeigniter时需要更新数据库,codeigniter,session-timeout,Codeigniter,Session Timeout,我有一个“用户表”“拥有”“登录”列。当用户登录时。”is_login更改为1',注销时'is_login更改为0' 但若用户关闭浏览器,则“为_login”列保持为1 我需要一个方法来更新数据库,当会话到期时关闭浏览器 我尝试过这一点,但没有做到: 我也愿意接受其他建议 当浏览器关闭时,您需要使用一些javascript/jQuery来捕获,并在应用程序中对脚本进行AJAX调用,该脚本可以将登录标志设置为0。使用jQuery $( window ).unload(function() {

我有一个“用户表”“拥有”“登录”列。当用户登录时。”is_login更改为1',注销时'is_login更改为0'

但若用户关闭浏览器,则“为_login”列保持为1

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

我尝试过这一点,但没有做到:


我也愿意接受其他建议

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

$( window ).unload(function() {
  $.post('location/of/your/script.php',{'identifier':'identifier_val'});
});
然后在script.php中,选择您发布的任何内容并对其进行操作

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


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

$(窗口)。卸载在我的情况下不起作用。还有其他解决办法吗?是的,我在回答中又提到了两个