我对CodeIgniter仍不是很熟悉,现在在登录系统上遇到了问题。
在Firefox浏览器中使用时,登录总是可以成功的。但有些IE7浏览器中登录一直可用,而其他IE7浏览器则总是无法登录。
当追踪代码时,我发现models/redux_auth_model.php成功验证了用户,将用户信息写入$this->session->set_userdata(),并将其重定向到我选择的会员页面。以下是代码:
public function login($identity = false, $password = false)
{
$identity_column = $this->config->item('identity');
$users_table = $this->tables['users'];
if ($identity === false || $password === false || $this->identity_check($identity) == false)
{
return false;
}
$query = $this->db->select($identity_column.', email, password, group_id')
->where($identity_column, $identity)
->where('active', 'Active')
->limit(1)
->get($users_table);
$result = $query->row();
if ($query->num_rows() == 1)
{
//$password = $this->hash_password_db($identity, $password);
if (!empty($result->activation_code)) { return false; }
if ($result->password === $password)
{
$this->session->set_userdata($identity_column, $result->{$identity_column});
$this->session->set_userdata('email', $result->email);
$this->session->set_userdata('group', $result->group_id);
return true;
}
}
return false;
}
我在IE7和FF中对$this->session进行了变量转储,并确认重定向之前所有的userdata都是完好无损的。会话中包含我的电子邮件信息、组信息和$identity_column信息。
然而,在一些IE7浏览器中,重定向后会话数据为空,这就是为什么CI一直让我退出系统的原因。在其他IE7浏览器中,它始终保持完整,在Firefox中也始终完整。
为什么会话数据取决于浏览器呢?
有没有什么想法进一步解决这个问题呢?我很困惑……