2010-05-12 5 views
0

로그 아웃하려고 할 때 세션이 삭제되었지만 Mozilla 브라우저의 뒤로 버튼 또는 기록 캐시를 사용하여 로그인하지 않고도 해당 페이지로 이동하여 세부 정보를 볼 수 있습니다. 내가 페이지로의 링크를 사용하는 경우 로그 아웃에 대한세션에서 로그 아웃 할 수 없습니다.

코드는이 코드에서

<php 
session_start(); 
session_unset($_SESSION['user']); 
//redirect to login page 
header('location:login.php'); 
session_write_close(); 
?> 
members page. 
<php 
if(!isset($_SESSION['user'])||(trim($_SESSION['user']==''))){ 
require('error.php'); 
} 
else{ 
require('view.php'); 
//the function queries the db. 
member_detail($user,$password); 
} 

를, 그것은 오류 페이지로 이동하지만 로그인하면 세션이 그렇게 문제가 활성화되어 있기 때문에, 회원 정보가 표시됩니다 로그 아웃 후입니다.

+0

질문 제목에서 "사이트를 처음 사용하므로 질문 할 때 여전히 문제가 있습니다."를 제거하고 질문 본문에 추가하십시오 – abel

답변

0

먼저 session_destroy 함수를 사용하여 세션이 파괴되었는지 확인하거나 전체 세션 배열을 설정 해제하십시오.

그리고 로그 아웃 후 테스트 페이지에 세션 배열을 인쇄하십시오. 이것은 당신에게 어떤 세션 변수가 있는지 알려줄 것입니다. isset 메서드를 사용하여 세션 변수가 있는지 여부를 확인합니다.

0

가끔 session_unset 및 session_destroy가 세션 데이터를 지우지 않습니다.

참조 : http://www.dmxzone.com/forum/topic/14240/

나는 비슷한 경험이 있습니다. 아마도 그것은 적절한 방법을 사용하지 않기 때문입니다.

Quickfix :

특정 세션 변수 설정 해제하려는 경우 :

$_SESSION["variable"]=""; 

'해제 그것

전체 세션 설정을 해제하려면 것

$_SESSION=array(); 

심각하게 그들이 권장 프로그래밍 관행으로 얼마나 유효한 지 모르지만, 그들은 나를 위해 일합니다. manuals

FROM

함수 안에서 전역 변수() 해제의 경우는, 로컬 변수 파괴된다. 변수는 호출 환경이 이고 unset()이 호출되기 전과 동일한 값을 유지합니다. 이 호출되었습니다.

and

로 세션() 현재 세션과 연관된 모든 데이터를 파괴한다. 세션과 관련된 전역 변수 중 하나가 해제되거나 세션 쿠키가 설정 해제되지 않습니다. 세션 변수를 다시 사용하려면 session_start()를 호출해야합니다.

세션을 종료하려면 사용자를 로그 아웃하는 것처럼 세션 ID도 설정 해제해야합니다. 쿠키가 세션 ID (기본 동작)를 전파하는 데 사용되는 경우 세션 쿠키를 삭제해야합니다. setcookie()를 사용할 수 있습니다.

아마도 다른 사용자가이 답변에 더 많이 추가 할 수 있습니다. 또한 php.net의 매뉴얼에는 샘플 코드에 대한 매우 유익한 의견이 있습니다.