【问题标题】:codeigniter session expiration refreshcodeigniter 会话过期刷新
【发布时间】:2012-08-16 20:27:51
【问题描述】:

我遇到会话过期刷新问题。

我这样做:

trought -> $.ajax ({url: "/index.php/main/refresh_session"});

功能:

function refresh_session() {
   $this->session->sess_destroy();

   $data = array('is_logged_in' => true);
   $this->session->set_userdata($data);
}

我的目的是刷新会话超时,但此代码不起作用,会话在 60 秒后过期。 (配置:$config['sess_expiration']= 60;)

也许有人遇到过类似的问题?

【问题讨论】:

  • 为什么是$this->session->sess_destroy()?这个函数应该是最后一个调用的,甚至 flash 变量也将不再可用。如果您只想销毁某些项目而不是全部,请使用 unset_userdata()。

标签: php ajax codeigniter session-timeout


【解决方案1】:

如果您坚持要调用$this->session->sess_destroy();,那么您还必须在尝试再次设置会话数据之前调用$this->session->sess_create();,否则将无法设置。

编辑:这是如果您使用数据库来存储会话。否则,您可以重新创建会话而无需手动调用sess_create()

【讨论】:

    【解决方案2】:

    对于 CodeIgniter 的最新版本,包括当前在“开发”分支中的内容,您不能在 session->sess_destroy 之后调用 session->set_userdata,正如另一个答案已经提到的那样。这是因为sess_destroy()清除了内部userdata数组,包括set_userdata间接需要的当前session_id(set_userdata调用sess_write直接需要当前session_id)。

    如果您启用了警告,您应该会看到此要求。

    【讨论】:

      【解决方案3】:

      $config['sess_time_to_update'] 设置为低于$config['sess_expiration']

      并删除$this->session->sess_destroy()。这个函数应该是最后一个调用的,甚至 flash 变量也将不再可用。如果您只想销毁一些项目而不是全部,请使用unset_userdata()

      【讨论】:

      • $config['sess_expiration'] = 60; $config['sess_time_to_update'] = 59; 'function refresh_session() { $data = array('is_logged_in' => true); $this->session->set_userdata($data); }' 现在会话过期根本没有执行。
      • 会话在 60 秒后过期。会话过期时间未更新:/
      【解决方案4】:
      trought -> $.ajax ({url: "/index.php/main/refresh_session"});
      
      function refresh_session() {
         $data = array('is_logged_in' => true);
         $this->session->set_userdata($data);
      }
      
      1. 根本没有执行会话到期:

        $config['sess_expiration'] = 60;
        $config['sess_time_to_update'] = 59;
        
      2. 会话在 60 秒后过期。会话过期时间未更新:

        $config['sess_expiration'] = 60;
        $config['sess_time_to_update'] = 5;
        $config['sess_time_to_update'] = ?
        

      【讨论】:

        【解决方案5】:

        我遇到了同样的问题,在经历了令人沮丧的几个小时后,我发现我的索引页上有一个空白区域。去掉空格就解决了。

        【讨论】:

          猜你喜欢
          • 2017-04-27
          • 2011-07-09
          • 2019-02-03
          • 1970-01-01
          • 2023-03-17
          • 1970-01-01
          • 1970-01-01
          • 2018-02-04
          • 2011-04-14
          相关资源
          最近更新 更多