2012-03-10 2 views
0

나는 사람이 로그인하고 세션이 생성 된 사이트가 있습니다.세션이 만료 될 때 PHP + 로그 아웃 회원

오래 동안 사이트를 떠나면 (정확한 시간대가 확실하지 않음) 세션이 종료되지만 회원은 여전히 ​​사이트에 있습니다. 그들은 여전히 ​​클릭하고 주위를 탐색 할 수 있으며, DB에 의미있는 데이터가 userID와 같은 SESSION 변수가 존재하지 않는다고 생각됩니다.

SESSION이 종료되면 사용자 로깅에 대한 조언을 찾고있었습니다. 나는 이와 같은 코드를 보았습니다 - 더 좋은 아이디어입니까?

<?php if(!isset($_SESSION[]) {header(loginpage.php);}?> 

위의 코드를 작성하는 더 좋은 방법이 있습니까?

이 코드는 어디에 배치해야합니까? 탐색 메뉴 나 실제로 사용자가 클릭 할 수있는 모든 장소에서?

마지막으로 SESSION이 자연스럽게 만료 될 때를 이해할 수있는 방법이 있습니다. 시간 기록을 보려면 화면에 인쇄 할 수있는 SESSION 변수가 있습니까?

감사

당신은 세션을 검증 할 필요가

답변

1

는, 당신은 이미 당신의 코드를 그 방향으로 향하고 있지만 충분하지 않습니다 : 세션이 시작된 후 $_SESSION[] 자동으로 존재하기 때문에

<?php if(!isset($_SESSION[]) {header(loginpage.php);}?> 

그것은 충분하지 않습니다 (PHP의 세션 메커니즘, session_start 참조). 세션이 정말 만료

isset($_SESSION['userID']) 

경우,이 설정되어서는 안 : 당신이 세션 내부의 userID를 저장 한 경우

대신, 하나 있는지 확인합니다.

0

위의 답변에 동의합니다. 이것이 어디에 속하는지 말하기 위해 애플리케이션이 어떻게 구성되어 있는지에 달려 있다고 말할 수 있습니다. 화면에 출력이 오기 전에 session_start 호출을 가정하고 사용자가 로그인 한 후에 설정되는 userID와 같은 세션 변수를 즉시 확인합니다. 로그인 페이지의 위치에 헤더를 설정하면 리디렉션이 설정되지 않습니다. 당신은 또한 지정된 간격으로 값을위한 세션 쿠키를 검사하는 j를 작성할 수있다. (나는 믿을 만하다. 그래서 그것을 시험해 본다.) 변수가 없다면 로그인 페이지로 리다이렉트 할 수있다. 세 번째 방법은 js 코드가 PHP 스크립트로 XHR 호출을하여 세션을 체크 아웃하는 것입니다.

관련 문제