检查Codeigniter会话是否已使用AJAX过期


Check if Codeigniter session has expired with AJAX

我正在创建一个帮助台系统,有时用户有两个多小时不使用该系统,然后在会话过期时返回,但最后加载的页面仍在屏幕上(例如表单(,用户可以正常使用,但当他提交表单时,他会重定向到登录页面(没关系(,但用户会丢失输入的数据。我想创建一个AJAX函数来检查会话是否已过期。应使用setTimeout()setInterval()执行该功能。我尝试过使用"sess_expiration",但这个值似乎不会在页面加载时重置,即在指定时间(默认情况下为7200(结束后,它会强制会话过期。

你可以这样做

$.ajax({
type : 'POST',
url  : '<?php echo site_url('controllername/methodname')?>'
success : function(data){
    if(data){
       //session available
    }else{
       // expired
    } 
});

和控制器方法

 function methodname(){
        $user_id = $this->session->userdata('user_id');
       if($user_id){
             echo 1;
       }else{
             echo 0;
       }
 }

您可以将ajax请求封装在函数中,每次都用TRUE或FALSE返回结果。此外,setInterval可以调用此函数来检查会话。

Codeigniter会话类有一个方法,可以让我们知道会话到期的情况。

function your_method(){
     $this->session->sess_read() === false ? echo "0" : echo "1";
}