2012-11-08 3 views
0

내가 파일 logout.php을 만드는 작업을하고로그 아웃 스크립트는

<a href='logout.php'>log out</a> 

하여 호출하지만 세션은 32 파괴 또는 해제되지 않습니다 없습니다. 나에게 도움이되는 logout.php 파일 나는 그들이

$_SESSION['user_id']) 
    $_SESSION['mem_id']) 
    $_SESSION['fname']) 

날 당신이하지 않는 변수이 세션

답변

1

을 파괴하는 데 도움이 세 가지 세션 변수를 genrate 내 로그인 파일에서

<?php session_start(); 

    if(isset($_SESSION['user_id']) | isset($_SESSION['mem_id'])|       
    isset($_SESSION['fname']) | isset($_SESSION['lname'])) { 

    $_SESSION=array(); 
    unset($_SESSION['user_id']); 
    unset($_SESSION['mem_id']); 
    unset($_SESSION['fname']); 

    if(isset($_COOKIE[session_name()])) { 

    setcookie(session_name(), '' , time()-3600); 
} 
    session_destroy(); 
    } 
    header("location:index.php"); 
    ?> 

아래에 주어진다 $_SESSION=array(); 변수가 이미 존재하고 배열 인 경우 다시 선언하지 마십시오.

OR에 대해서도 ||을 사용해야합니다. 단일 파이프 |은 비트 연산자이며 사용자가 원하는 것은 아닙니다. 당신이 디버깅 할 수

... isset($_SESSION['user_id']) || isset($_SESSION['mem_id']) ... 

것은 그것에게 if 문 내부 echo 무언가가있다. 화면에 에코를 표시하면 if 문으로 넘어갑니다. 그렇지 않은 경우, 그렇지 않다는 것을 알 수 있습니다. 그런 다음 if 문에 대한 조건이 충족되었는지 여부를 파악하여 잘못된 점을 찾을 수 있습니다.

1

왜 긴 코드를 사용하여 logout.php에서 세션을 파괴합니까? 세션을 시작한 다음 세션을 종료하십시오. 비슷한 코드입니다.

<?php 
session_start(); 
if(session_destroy()) 
{ 
header("Location: index.php"); 
} 
?>