2010-06-10 4 views
1

이것은 매우 쉽게 할 수는 있지만 알아낼 수는 없습니다.디버깅 목적으로 PHP 세션을 끝내십시오.

기본적으로 저는 파이썬과 PHP로 작성된 느슨하게 몇 개의 웹 응용 프로그램을 가지고 있습니다. 파이썬 코드는 사용자가 로그인하여/주어진 파이썬 리소스에 액세스 할 수있는 권한이 있는지 확인하기 위해 PHP 세션 (사용자가 로그인 할 때 PHP 응용 프로그램에서 생성됨)을 사용합니다.

내 질문은 다음과 같습니다. 모든 활성 세션을 강제 종료하는 가장 쉬운 방법은 무엇입니까? 파이썬 코드를 테스트하기 위해 디버깅 목적으로 이것을하고 싶습니다. session.max_lifetime PHP 변수를 변경하려고 시도했지만 세션이 종료되었다는 것을 보장하지 않습니다.

난 그냥 파일을 삭제하지만, 이것은 (내가 PHP 페이지를 새로 고칠 때 오류가 내 아파치 로그에 표시하고 신속하게 다시로드되지 않습니다)

어떤 아이디어 문제가 발생할 것으로 보인다 시도?

답변

1

모든 클라이언트의 모든 세션을 완전히 끝내는 중앙 집중식 방법이 없습니다.

모든 세션을 끝내려면 앱 내의 정의 된 위치에 정의 된 이름 (예 : end.txt)의 파일을 만듭니다.

부트 스트랩 파일 (또는 세션을 초기화 할 때마다)은 세션을 시작한 직후 해당 파일이 존재하는지 확인합니다. 그렇다면 session_destroy()을 수행하고 모든 쿠키를 설정 해제하십시오.

이 방법을 사용하면 end.txt 파일을 수동으로 제거해야합니다.

0

서버에서 세션 파일을 삭제해도 클라이언트 측에서 sissison 쿠키는 삭제되지 않습니다. 세션을 "종료"할 세션 쿠키를 삭제할 수 있습니다. 또는 간단하게 session_unset()을 사용하여 세션 서버 측을 파괴 할 수 있습니다.

또한 session_destroy()을 사용해야하고 세션 쿠키를 설정 해제해야합니다 (세션 쿠키의 주석을보고 방법을 확인하십시오).

1

그냥 다른 질문에 이걸 발견 : cleanup php session files

당신 수있는 위해서는 ini_set을 사용하여 (나는이 시도하지 않은, 그러나 그것은 합리적인 것 같다) 0 또는 1과 같은 낮은 값에 gc_maxlifetime를 설정해보십시오() 기능.

http://ar.php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime

당신의 때 session.save_path 폴더의 모든 파일을 삭제하는 것입니다 시도하는 또 다른 것은. 물론 적절한 파일 권한이 필요하지만 더 나은 옵션 일 수 있습니다.