2011-11-09 8 views
0

ログインをクリックすると、ログアウトボタンが表示されます。ログアウトボタンをクリックすると、再度ログインオプションが表示されます。現在のところ、セッションを作成してサーバー内の適切な情報で満たしても、ログインウィンドウ上に座っているだけです。ログインしたときにPHPがインポートする内容を変更しない

私のコードがうまくいかない理由はわかりません。私はそれが働いていた、そしてそれは突然停止し、私は何を変更したか分からない。また、私はこれがデータベースを使用していないことを認識していますが、私はそれを使用する必要がありますが、代入は1つを使用しないように呼び出します。ここで

は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']はまだ空で、フォームを表示しています。しかし、あなたのログインデータがあるので、あなたの詳細が正しければ、あなたはログインし、リフレッシュ後にそれが表示されます。

あなたのログアウトにも同じです。ログアウトフォームを送信すると、セッションは最後の1つのリクエスト(破棄)でアクティブになるため、ログアウトページが再度表示されます。ブラウザをリフレッシュする必要があります。ログインするとその情報が表示されます。

両方の問題を修正するには、if-ifの両方にリダイレクトを追加します。たとえば、

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

これにより、ログアウト処理後にページがリロードされ、効果的な結果が得られます。ログインと同じことをやってください。それもうまくいきます。

関連する問題