2011-02-07 4 views
3

나는 지금 당장 완전히 혼란스러워 보이기 때문에 나는 어리 석을 것입니다. 내가 세션이내 세션이 왜 남아 있습니까?

...

및 특정 지점에서, 나는 완전히이 세션을 죽일 필요 $_SESSION['handbag_id'];.

// at the start of the page 
session_start(); 

// elsewhere on the same page 
unset($_SESSION); 
session_destroy(); 

그럼에도 불구하고, 나는 다음 다른 페이지로 이동하고,

echo $_SESSION['handbag_id']; 

을 그리고 난 여전히 이전과 같은 handbag_id을 가지고 있습니다.

무엇이 누락 되었습니까? 이것이 어떻게 작동하는지 이해하지 못하거나 서버의 가치를 파괴하려는 욕망보다 우선하는 서버 설정이 있습니까?

+4

해당 함수가 없습니다. destroy_session(); –

+0

은 (는) 귀하의 세션 ID입니다. ??? – powtac

+0

콜이 말했듯이, 그것은 session_destroy이어야합니다. – Ashley

답변

3

세션 기능은 매우 까다로운 일이 될 수 있습니다. 세션을 완전히 종료하려면 $_SESSION 수퍼 글로벌에 새 값을 지정해야합니다. 그렇지 않으면 현재 스크립트에서 세션 데이터를 언로드하는 것뿐입니다. 이 작동합니다 : 당신은 또한 완전히 새로운 세션을 열어야 할 경우

session_start(); 
$_SESSION = array(); 
session_write_close(); // Not required 

, 당신은이 작업을 수행 할 수 있습니다

session_regenerate_id(FALSE); 
$tmp = session_id(); 
session_destroy(); 
session_id($tmp); 
unset($tmp); 
session_start(); 

업데이트 :

이와 관련된 질문이 유용하게 사용할 수 : Close session and start a new one

+0

조금 화가났다. 나는 이것을 할 수있을 것이라고 확신한다 :'session_destroy(); session_start(); session_regenerate_id();' – Leigh

+1

@Leigh - 테스트를하기 전까지는 화가 나지 않습니다. 진지하게. 이전 ID를 알고 있으면 코드가 복구 될 준비가 된 이전 세션을 떠날 것입니다. –

+0

감사합니다. 나는 그것을 시도했지만 session_destroy()는 세션이 초기화되지 않은 오류를 발생시킵니다. – willdanceforfun

3

unset($_SESSION); 

는 수행하지 마십시오이

$_SESSION = array(); 

그리고 마지막으로

session_destroy(); 
+1

감사합니다. 흠 ..하지만 난 아직 내 세션을 가지고있다. – willdanceforfun

0

인쇄하기 전에 session_comitt을 사용하면 마법을 볼 수 있습니다.

관련 문제