2011-11-09 6 views
0

로그인을 클릭하면 로그 아웃 버튼이 표시됩니다. 로그 아웃 버튼을 클릭하면 로그인 옵션이 다시 표시됩니다. 현재 세션을 생성하고 내 서버의 올바른 정보로 채우지 만 로그인 창에 계속 앉아 있습니다.로그인했을 때 PHP가 가져올 내용을 변경하지 않습니다.

왜 코드가 작동하지 않는지 잘 모르겠습니다. 나는 그것을 작동 시켰고 갑자기 멈췄다. 나는 내가 무엇을 바꿨는지 잘 모르겠다. 또한, 나는 이것이 데이터베이스를 사용하지 않고 하나를 사용해야한다는 것을 알고 있지만 할당은 하나를 사용하지 않도록 요청합니다. 여기

이 index.php에 있습니다 :

여기
<?php 

    session_start(); 
    if(empty($_SESSION['email'])) 
    { 
     include("includes/login.php"); 
    } 
    else 
    { 
     include("includes/logout.php"); 
    } 

?> 

내 login.php입니다 :

여기
<form id="login" method="post" action="index.php"> 
    <input name="email" type="email" placeholder="[email protected]" required="required"> 
    <input name="password" type="password" placeholder="Password" required="required"> 
    <input class="button" name="submit" type="submit" value="Submit"> 
</form> 

<?php 
    //if someone tries to log in 
    if (isset($_POST['email']) && isset($_POST['password'])) 
    { 
     $email=($_POST['email']); 
     $password=sha1($_POST['password']); 

     $users = file('includes/users.php', FILE_IGNORE_NEW_LINES); 

     for($i=0;$i<count($users);$i++) 
     { 
      $user = explode(',', $users[$i]); 
      if($user[0] === $email && $user[1] === $password) 
      { 
       session_start(); 
       $_SESSION['email']=$user[0]; 
       $_SESSION['pass']=$user[1]; 
       $_SESSION['name']="$user[2] $user[3]"; 
       $_SESSION['admon']=$user[4]; 
      } 
     } 
    } 
?> 

가 logout.php입니다 : 당신의 index.php에서

<form id="login" method="post" action="index.php"> 
    <input name="logout" type="submit" value="logout" /> 
</form> 

<?php 
    if($_POST['logout'] === 'logout') 
    { 
     session_destroy(); 
    } 
?> 

답변

1

, 사용자가 이미 로그인했는지 확인합니다 :

if(empty($_SESSION['email'])) 

그렇지 않은 경우 로그인 페이지를 포함하고 그렇지 않은 경우 로그 아웃하십시오. 그러나 방금 양식을 제출 한 경우 SESSION [ 'email']은 여전히 ​​비어 있으며 양식을 표시하고 있습니다. 그러나 로그인 데이터가 있으니 세부 정보가 정확하면 로그인 할 것입니다. 그러면 새로 고침 후에 표시됩니다.

로그 아웃과 동일합니다. 로그 아웃 양식을 제출하면 마지막 요청 (소멸)에 대한 세션이 활성화되어 로그 아웃 페이지가 다시 표시됩니다. 브라우저를 새로 고침해야 로그인 정보가 표시됩니다.

두 가지 문제를 모두 해결하려면 if-if의 양쪽 끝에 리디렉션을 추가하십시오. 예컨대 :

if($_POST['logout'] === 'logout') 
{ 
    session_destroy(); 
    header('Location: index.php); 
} 

이 효과적으로 당신에게 좋은 결과를 제공, 로그 아웃을 처리 한 후 페이지를 다시로드합니다. 로그인과 동일하게 작동하면 작동합니다.

관련 문제