代码之家  ›  专栏  ›  技术社区  ›  Marques

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

  •  2
  • Marques  · 技术社区  · 11 年前

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

    2 回复  |  直到 8 年前
        1
  •  4
  •   Muhammad Raheel    11 年前

    你可以这样做

    $.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可以调用此函数来检查会话。

        2
  •  0
  •   alps    10 年前

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

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