各ユーザーのログインセッションを作成しています。特定のユーザーのセッションログインを削除する方法
ユーザーのログインやログアウトが、その履歴がデータベースに記録されているpublic function check_login()
{
$uname = $this->input->post('username');
$passwd = $this->input->post('password');
$this->form_validation->set_rules('username','user_name','required');
$this->form_validation->set_rules('password','password','required');
if($this->form_validation->run() == false)
{
$this->load->view('login');
}
else
{
$this->load->model('model_login');
$result = $this->model_login->query_login();
if(!$result)
{ $this->load->view('login'); }
else
{
//Log History
$id_user = $this->session->userdata('id_user');
$data_log['id_user'] = $this->session->userdata('id_user');
$data_log['log_time'] = date("Y-m-d H:i:s");
$data_log['status'] = 1;
$this->model_login->insert_log($data_log);
$data = array('log_status' => 1);
$this->model_login->update_log($data,$id_user);
echo "<script>alert('Login Sukses')</script>";
redirect(base_url() . 'con_vendor/index');
}
}
}
(履歴コメントをログ参照)と、ログイン状態が1に変更(彼らはオンラインだ、この平均値):これは私のセッション機能です。
しかし、ユーザーがログアウトすると、ログアウトしたユーザーだけでなく、すべてのユーザーのセッションデータが削除されたように見えます。 user_log dbには、最初のユーザーログアウトIDのみが記録されます。ログアウト時刻sが記録されても、次のユーザーIDは記録されません。
例:
ユーザーログインしてからユーザーBにログインします。すべてのログインデータは、user_logテーブルに記録されます。その後、ユーザーBはログアウトし、ユーザーAはログアウトします。ユーザBのセッションデータのみが記録され、ユーザAのセッションデータは失われる。
これは私のログアウト機能である:
public function logout()
{
$id_user = $this->session->userdata('id_user');
$data_log['id_user'] = $this->session->userdata('id_user');
$data_log['log_time'] = date("Y-m-d H:i:s");
$data_log['status'] = 2;
$this->model_login->insert_log($data_log);
$data = array('log_status' => 0);
$this->model_login->update_log($data,$id_user);
$arr_sess = array( 'id_user' => $this->session->userdata('id_user'),
'username' => $this->session->userdata('username'),
'level' => $this->session->userdata('level'),
'nip' => $this->session->userdata('nip'),
'bagian' => $this->session->userdata('bagian')
);
$this->session->unset_userdata($arr_sess);
redirect('con_login/index');
}
USER_LOGテーブル、ユーザAとBのログイン/ログアウト
No user_id log_time status
1 USER_B 10:25 1 //1 is login and 2 is logout
2 USER_A 11:03 1
3 USER_B 11:45 2
4 (no data) 11:55 2
どのようにログインを実行していますか?同じブラウザで?危険なのは、あなたが同じセッションの下でログインすることができるので、ログアウトしたときにあなたはセッションを1つだけ抹消することです。これは、ログインごとにsession_idを表示することで証明できます。もっと良い方法は、2つのセッションを与える2つのブラウザを使用することです。もう一度session_idsで確認してください。 – TimBrownlaw
はい同じPCの同じブラウザでテストしました – Vahn
完全に受け入れられないテスト方法!!!別のマシンまたはatleast別のブラウザを使用してください... – Naga