나는 MySQL에서 사용자 로그인 데이터를 가지고 있는데, 사용자는 세션에서 1 회만 로그인 할 수 있습니다. 로그 아웃 버튼을 사용하는 경우, 코드는 잘 실행하지만 사용자 만약 내가 두번째 로그인 사용자의 액세스를 차단 is_login
을 사용하는 브라우저브라우저 강제 종료 또는 세션 만료 후 데이터베이스의 로그인 상태 변경
// user_table in MySQL
user_id user_username user_password is_login
1 xyzabc xxxxx 0 // 0 is not
2 abcdef xxxxx 1 // 1 is login
3 efghij xxxxx 1
을 닫고있다. 따라서 각 계정은 한 번만 로그인 할 수 있으며 is_login
은 is_login
에서 0
으로 로그인 세션에서 사용자를 걷어차는 데 사용됩니다. 사용자가 logout
기능을 사용하여 로그인 한 경우
// Inside my login function
public function login()
{
... some validation login code ...
// User ID accepted & login = TRUE
$this->session->set_userdata('id', $data->user_id);
// this query is in model, I just copy it to here
$this->db->query('UPDATE user_table SET is_login = "1" WHERE user_id = ".$id."');
$this->session->sess_expiration = 7200;
$this->session->sess_expire_on_close = TRUE;
}
// Logout function in controller
public function logout() {
$id = $this->session->userdata('id');
// this query is in model, I just copy it to here
$this->db->query('UPDATE user_table SET is_login = "0" WHERE user_id = ".$id."');
$this->session->sess_destroy();
}
는 코드가 잘 실행하고 있습니다.
is_login
열은 0
에 다시 설정됩니다. 그러나 브라우저 강제 종료 is_login
상태가 여전히 1
인 경우. 어떤 해결책? (11)
당신은 로그인 시간과 관련된 테이블에 타임 스탬프 형식 열을 필요 : 사용자가 예제 함수 아래처럼 호출 페이지에 액세스 요청 지금 때마다
좋아요. 또한, 그 값보다 오래된 모든 행의 상태가 변경되는 모든'$ sessionTimeSpanValue'를 cronjob하십시오. – Tpojka