PHP로 로그인 한 사용자를위한 페이지를 만들었습니다. 하지만 로그 아웃 한 후에도 브라우저에 제한된 페이지를 입력하면 볼 수 있습니다.어떻게 PHP가 세션이 종료되었음을 감지하는 조건을 추가 할 수 있습니까?
이 코드는 페이지의 시작 부분에 있습니까? :) 감사
<?php
if(!isset($_SESSION)){
session_start();
}
?>
PHP로 로그인 한 사용자를위한 페이지를 만들었습니다. 하지만 로그 아웃 한 후에도 브라우저에 제한된 페이지를 입력하면 볼 수 있습니다.어떻게 PHP가 세션이 종료되었음을 감지하는 조건을 추가 할 수 있습니까?
이 코드는 페이지의 시작 부분에 있습니까? :) 감사
<?php
if(!isset($_SESSION)){
session_start();
}
?>
로그 아웃 할 때 session_destroy();
으로 전화를 걸어 주시기 바랍니다.
또한, 당신은 모든 페이지에
<?php
if(!isset($_SESSION)){
session_start();
}
?>
을 필요 없어요. 이것은 로그인 페이지에 있어야합니다. 다른 모든 페이지의 경우 :
<?php
if(!isset($_SESSION)){
//Redirect to login Page
} else {
//User is logged in. Display relevant content.
}
?>
많은 감사합니다 @ Shivam Verma :) – iTux
쿠키는 사용자가 로그인했는지 여부를 제어하는 가장 좋은 방법입니다. 간단하면서도 안전하지 않은 방법은 로그인 성공시 쿠키를 "loggedin"작성하고 로그 아웃 할 때 쿠키를 삭제하는 것입니다.
더 복잡한 쿠키 로그인/로그 아웃 논리는 로그인 할 때 데이터베이스에서 추적되는 큰 임의의 문자열을 대신 저장할 수 있습니다. 로그 아웃하면 데이터베이스는 쿠키 값에 사용 된 임의의 문자열을 삭제하고 쿠키도 삭제합니다. 이렇게하면 누군가가 쿠키를 훔쳐 그것을 재사용하려고해도 페이지 생성시 임의의 문자열 상태를 검사하고 페이지에 대한 액세스를 거부합니다.
고마워요 @ Geremy :) – iTux
세션을 삭제하지 않았기 때문에 발생합니다.
이렇게하려면 'logout'을 클릭하면 session_destroy()
을 호출해야하는 페이지로 연결되는 페이지에 대한 링크를 만들어야합니다. 예를 들어, <a href="path_to_your_page.php">Logout</a>
그리고 당신의 페이지에, 당신은이 작업을 실행
<?php
session_start();
session_destroy();
header("location:index.php");
?>
고마워요 @begueradj, 로그 아웃 코드가 다른 페이지에 있습니다 ... 다음과 같습니다 : php if (! isset ($ _ SESSION)) { session_start(); } $ _SESSION [ 'username'] = ""; $ _SESSION [ 'username'] = NULL; unset ($ _ SESSION [ 'username']); session_destroy(); 헤더 ("위치 : ../index.php") ?>'하지만 다시 클릭하면 문제없이 페이지로 돌아갑니다. – iTux
http://stackoverflow.com/questions/11104205/php-how-to-detect-is-a-session-id-is- dead-or-alive 이것이 도움이됩니까? –
고마워요 @ 에반스 Belloeil :) – iTux