2014-07-09 3 views
0

PHP로 로그인 한 사용자를위한 페이지를 만들었습니다. 하지만 로그 아웃 한 후에도 브라우저에 제한된 페이지를 입력하면 볼 수 있습니다.어떻게 PHP가 세션이 종료되었음을 감지하는 조건을 추가 할 수 있습니까?

이 코드는 페이지의 시작 부분에 있습니까? :) 감사

<?php 
if(!isset($_SESSION)){ 
    session_start(); 
} 

?>

+1

http://stackoverflow.com/questions/11104205/php-how-to-detect-is-a-session-id-is- dead-or-alive 이것이 도움이됩니까? –

+0

고마워요 @ 에반스 Belloeil :) – iTux

답변

0

로그 아웃 할 때 session_destroy();으로 전화를 걸어 주시기 바랍니다.

또한, 당신은 모든 페이지에

<?php 
if(!isset($_SESSION)){ 
    session_start(); 
} 
?> 

을 필요 없어요. 이것은 로그인 페이지에 있어야합니다. 다른 모든 페이지의 경우 :

<?php 
if(!isset($_SESSION)){ 
    //Redirect to login Page 
} else { 
    //User is logged in. Display relevant content. 
} 
?> 
+0

많은 감사합니다 @ Shivam Verma :) – iTux

0

사용 session_start 당신이 세션과 작업해야 항상.

전에 session_start 세션이 없습니다.

+0

고마워요 @ 팬더 :) – iTux

0

쿠키는 사용자가 로그인했는지 여부를 제어하는 ​​가장 좋은 방법입니다. 간단하면서도 안전하지 않은 방법은 로그인 성공시 쿠키를 "loggedin"작성하고 로그 아웃 할 때 쿠키를 삭제하는 것입니다.

더 복잡한 쿠키 로그인/로그 아웃 논리는 로그인 할 때 데이터베이스에서 추적되는 큰 임의의 문자열을 대신 저장할 수 있습니다. 로그 아웃하면 데이터베이스는 쿠키 값에 사용 된 임의의 문자열을 삭제하고 쿠키도 삭제합니다. 이렇게하면 누군가가 쿠키를 훔쳐 그것을 재사용하려고해도 페이지 생성시 임의의 문자열 상태를 검사하고 페이지에 대한 액세스를 거부합니다.

+0

고마워요 @ Geremy :) – iTux

0

세션을 삭제하지 않았기 때문에 발생합니다.
이렇게하려면 'logout'을 클릭하면 session_destroy()을 호출해야하는 페이지로 연결되는 페이지에 대한 링크를 만들어야합니다. 예를 들어, <a href="path_to_your_page.php">Logout</a> 그리고 당신의 페이지에, 당신은이 작업을 실행

<?php 
session_start(); 
session_destroy(); 
header("location:index.php"); 
?> 
+0

고마워요 @begueradj, 로그 아웃 코드가 다른 페이지에 있습니다 ... 다음과 같습니다 : '하지만 다시 클릭하면 문제없이 페이지로 돌아갑니다. – iTux

관련 문제