因此,当会话超时在Codeigniter中工作时,我无法重定向到登录页面。这对我来说可能是一个非常基本的错误,但我在控制器中使用的代码是:
if(!$this->session->userdata('is_logged_in')) {
redirect('login/');
}
它可以将用户重定向到登录页面,但会继续循环回登录页面。这是为什么?
答案 0 :(得分:1)
可能是因为会话中没有名为is_logged_in
的数据。如果您查看manual,您将看到会话中存储的默认数据:
什么是会话数据?
就CodeIgniter而言,会话只是一个数组 包含以下信息:
用户唯一的会话ID(这是一个统计上随机的字符串 具有非常强的熵,用MD5进行散列以便于携带,以及 每五分钟重新生成(默认情况下)用户的IP地址 用户的用户代理数据(浏览器数据的前120个字符 string)“最后一个活动”时间戳。
您需要在用户登录时设置is_logged_in
或使用session_id
或last_activity
内已有的内容。
答案 1 :(得分:1)
您需要检查用户是否在登录页面上。听起来它在执行请求时正在执行。
这样的事情应该这样做:
if(!$this->session->userdata('is_logged_in') && !strstr(current_url(), 'login/')) {
redirect('login/');
}
也可能像stormdrain所说的那样,没有设置会话数据。