2013-10-10 4 views
2

로그 아웃을 시도 할 때 : session_destroy();이 작동했습니다. 하지만 문제는 세션이있는 장바구니가 있다는 것입니다. 따라서 session_destroy();은 나를위한 옵션이 아닙니다. unset($_SESSION['username']); 기능을 사용할 때 작동하는 것 같습니다. 내 accountpage로 돌아갈 때, 난 그냥 다시 로그인하고있어 내 로그 아웃 스크립트는 다음과 같습니다.. I는 사용자의이 코드 조각으로 확인PHP 세션이 설정되지 않았거나 PHP 세션이 파괴되었습니다.

<?php 
unset($_SESSION['username']); 
unset($_SESSION['id']); 

header('Location: index?page=home'); 
?> 

가 로그인 (누군가가 말해 줄 수 또는 이것도 안전합니까?)

<?php if (!$_SESSION['username'] && !$_SESSION['id']){ ?> 
<?php header ('Location: index?page=home'); ?> 
<?php } ?> 

이것은 필요한 정보입니다 (제 생각 엔). 더 필요한 것이 있으면 저에게 물어보십시오.

짧은 버전의 제 질문 : 장바구니 세션을 파괴하지 않고 세션을 어떻게 파기 할 수 있습니까?

감사합니다.

답변

4

당신이 할 수있는 여기 session_write_close()을 시도해보십시오. 스크립트가 끝난 후에 자동으로이 작업을 수행하는 PHP 구성이 있지만 PHP가 다르게 구성되었을 수 있습니다. 당신이 시도 할 수 디버깅을 위해서

<?php 
unset($_SESSION['username']); 
unset($_SESSION['id']); 

session_write_close(); 

header('Location: index?page=home'); 
?> 

:

<?php 

echo $_SESSION['id'].' - '.$_SESSION['username']; 

if(!$_SESSION['username'] && !$_SESSION['id']){ 
    header ('Location: index?page=home'); 
} 

?> 
+0

이 함수를 사용하면 문제가 해결됩니다 :'session_write_close();'도와 줘서 고마워! – Appel

+0

여러분을 환영합니다! 왜 이것이 당신을 위해 일어나고 있는지 알고 싶다면이 질문에서 내 대답을 읽어주십시오 : http://stackoverflow.com/questions/19119354/is-each-session-call-is-separate-call-to- server/19119831 # 19119831 – MonkeyZeus

1

로그 아웃 스크립트에서 session_start(); 함수 호출을 방금 잊어 버린 것일 수도 있습니다.

<?php 
session_start(); 

unset($_SESSION['username']); 
unset($_SESSION['id']); 

header('Location: index?page=home'); 
+0

가 난으로 session_start이(); 내 로그 아웃 스크립트의 맨 위에. – Appel

+0

@Appel 왜냐하면 실제로 다른 모든 것은 정상적으로 보입니다 ... 내가 할 수있는 것은 추측입니다 ... – bwoebi

0

가장 쉬운 방법으로 변수 session_destroy를 설정 해제에 대한 completly 세션을 파괴하는

<?php 
session_start(); 
if(empty($_SESSION['user']) && empty($_SESSION['id'])) 
{ 
echo "please login"; 

} 

unset 사용을 사용하기 때문에 내가 사용한다 제안 모두 같은 :

<?php 
session_start(); 
unset($_SESSION['user']); 
unset($_SESSION['id']); 
session_destroy(); 
header("location:yourpage.com"); 
?>