Codeigniter中的会话超时重定向

时间:2013-10-10 18:52:13

标签: php codeigniter session

因此,当会话超时在Codeigniter中工作时,我无法重定向到登录页面。这对我来说可能是一个非常基本的错误,但我在控制器中使用的代码是:

if(!$this->session->userdata('is_logged_in')) {
    redirect('login/');
}

它可以将用户重定向到登录页面,但会继续循环回登录页面。这是为什么?

2 个答案:

答案 0 :(得分:1)

可能是因为会话中没有名为is_logged_in的数据。如果您查看manual,您将看到会话中存储的默认数据:

  

什么是会话数据?

     

就CodeIgniter而言,会话只是一个数组   包含以下信息:

     

用户唯一的会话ID(这是一个统计上随机的字符串   具有非常强的熵,用MD5进行散列以便于携带,以及   每五分钟重新生成(默认情况下)用户的IP地址   用户的用户代理数据(浏览器数据的前120个字符   string)“最后一个活动”时间戳。

您需要在用户登录时设置is_logged_in或使用session_idlast_activity内已有的内容。

答案 1 :(得分:1)

您需要检查用户是否在登录页面上。听起来它在执行请求时正在执行。

这样的事情应该这样做:

if(!$this->session->userdata('is_logged_in') && !strstr(current_url(), 'login/')) {
    redirect('login/');
}

也可能像stormdrain所说的那样,没有设置会话数据。