我想防止我的用户进行多次登录,一旦用户登录,如果同一用户名登录他们会提示“帐户已经登录到其他设备”
我的登录控制器
public function login()
{
$this->logged_in();
$this->form_validation->set_rules('email', 'Email', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
if ($this->form_validation->run() == TRUE) {
// true case
$email_exists = $this->model_auth->check_email($this->input->post('email'));
if($email_exists == TRUE) {
$login = $this->model_auth->login($this->input->post('email'), $this->input->post('password'));
if($login) {
$logged_in_sess = array(
'id' => $login['id'],
'username' => $login['username'],
'email' => $login['email'],
'logged_in' => TRUE
);
$this->session->set_userdata($logged_in_sess);
redirect('dashboard/', 'refresh');
}
else {
$this->data['errors'] = '<b>Signin account failed</b>';
$this->load->view('login', $this->data);
}
}
else {
$this->data['errors'] = '<b>Signin account failed</b>';
$this->load->view('login', $this->data);
}
}
else {
// false case
$this->load->view('login');
}
}
我有一个名为“ci\u session”的表,以便将会话存储在数据库中。
希望有人能帮我。谢谢。
1条答案
按热度按时间yx2lnoni1#
最好的方法是使用会话和cookies跟踪已经登录的用户。
每当新用户尝试登录时,请验证该特定用户是否正在进行任何活动会话。如果活动会话已打开,则需要使用用户的当前cookie检查会话数据库中的cookie。如果不存在cookie,则表示该用户的新登录。如果存在cookie并且与用户提供的cookie匹配,则表示活动会话。如果cookie不匹配,则用户正试图从另一个源登录。最后,如果是新的登录,那么在用户的系统和会话数据库中创建并存储一个cookie。
希望这会有所帮助