我想阻止我的用户进行多次登录,一旦用户登录,如果用户名相同,则提示“帐户已登录其他设备。”
我的登录控制器
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_session”的表格,以便我将会话存储在我的数据库中。
希望有人在这里帮助我。感谢。
答案 0 :(得分:1)
最好的方法是使用会话和Cookie跟踪已登录的用户。
每当新用户尝试登录时,请验证该特定用户是否正在进行任何活动会话。如果启用了活动会话,则需要使用用户的当前cookie检查会话DB中的cookie。如果不存在cookie,则表示其为用户重新登录。如果存在cookie并且与用户呈现的cookie匹配,则表示活动会话。如果cookie不匹配,则用户尝试从其他来源登录。最后,如果它是新登录,请在用户的系统和会话数据库中创建并存储cookie。
希望这会有所帮助