我将尽力解释这一点,因为我不确定我是否完全理解发生了什么。
我已经构建了一个用户必须登录的 codeigniter 应用程序。登录在过去三周内一直有效,从那以后我没有碰过它。今天在管理员用户下成功登录几次后,我突然无法使用该特定帐户登录,尽管我可以使用其他帐户。
从那以后,我撕毁了我的代码,试图弄清楚发生了什么。似乎登录过程正在运行,但是在设置会话后,它会删除它们并且用户不再登录。
我的问题是,是否可以在某个用户上设置会话的次数,或者这可能与 phpmyadmin 设置有关?我不知道该怎么做,我以前从来没有发生过这样的事情,坦率地说,它只会发生在一个用户身上是没有任何意义的。
这是我的控制器中的登录检查
function checkLogin(){
//This function checks the login to make sure that the user is indeed entering the right email and password
$salt = '******';
$loginObject = array(
'email' => $this->input->post('email'),
'password' => md5($salt . $this->input->post('password'))
);
$login = $this->users_model->checkUser($loginObject);
if($login == true) {
$currentUser = $login;
$this->session->set_userdata('currentUser', $currentUser);
$this->session->set_userdata('loggedin', true);
$this->user = $this->session->userdata('currentUser');
$type = $this->users_model->getUser($this->user->user_id);
switch($type[0]->type) {
case 1:
redirect('/myStories/'.$this->user->pen_name);
break;
case 2:
redirect('recent/');
break;
case 3:
redirect('recent/');
break;
case 'banned':
$this->session->sess_destroy();
redirect('banned/');
break;
case 'deactive': // deactivate
redirect('home');
break;
}
} else {
redirect('home/errorPage');
}
}
这就是我的模型
public function checkUser($loginObject)
{
//This sets the email and the password from the loginObject and then gets the user
$this->db->where('email', $loginObject['email']);
$this->db->where('password', $loginObject['password']);
$query = $this->db->get('user_tbl');
if($query->num_rows() > 0){
return $query->row();
}else{
return false;
}
}
就像我说的那样,这适用于除一个用户之外的每个用户,并且在一小时前也适用于那个用户。