2011-09-12 1 views
0

로그 아웃 링크를 누르면 페이지에서 사용자가 종료되지 않지만 클릭 한 후 수동으로 새로 고침 할 때 실제로 로그 아웃됩니다. 로그 아웃 명령은 다음과 같습니다FireFox에서 unset_session을 사용하여 PHP 세션을 제거 할 때의 문제

$URL = $_GET['url']; 
session_unset(); 
redirect($URL); 

페이지는 삭제하고 그냥 수동 새로 고침 후 확인 비록 내가 세션 변수를 참조 리디렉션됩니다.

Chrome 및 IE에는 아무런 문제가 없습니다.

+1

당신에게 확신 : 여기

는 것을 수행하는 PHP 설명서에서 샘플 코드? 새로 고침을 클릭하면 로그 아웃 됨으로 표시되므로이 문제가 의심됩니다. – Brad

+0

session_unset을 호출하기 전에 session_start()를 호출합니까? – Gerben

+0

브래드 - 그럼 어떻게해야합니까? Gerben - 예, 있습니다. – Nimi

답변

0

실제로 사용자를 로그 아웃하려면 세션 ID와 클라이언트에 세션 ID를 전파하는 데 사용되는 쿠키도 해제해야합니다. 이 단순히 캐싱 문제가되지 않습니다

<?php 
// Initialize the session. 
// If you are using session_name("something"), don't forget it now! 
session_start(); 

// Unset all of the session variables. 
$_SESSION = array(); 

// If it's desired to kill the session, also delete the session cookie. 
// Note: This will destroy the session, and not just the session data! 
if (ini_get("session.use_cookies")) { 
    $params = session_get_cookie_params(); 
    setcookie(session_name(), '', time() - 42000, 
     $params["path"], $params["domain"], 
     $params["secure"], $params["httponly"] 
    ); 
} 

// Finally, destroy the session. 
session_destroy(); 
+0

Ofir, 상세한 답변을 주셔서 감사하지만 도움이되지 않았습니다. 여전히 동일합니다. 또한 FireFox의 로그인 상황에서도 발생합니다. – Nimi

+0

누군가 도움을받을 수 있습니까? – Nimi