2017-07-21 10 views
-1

現在、私のウェブサイトのログインページで作業しており、私はPHPを使用しています。 初めてログインしようとするとうまく動作し、パスワードが正しく検証され、パスワードが一致しない場合、またはユーザーが最初に登録されていない(電子メールアドレスが見つからない)場合にエラーが表示されるため、コードのロジックがいいと思っています。ログアウト後のログインの問題

ログアウトしてもう一度ログインしようとすると、コードは正常に動作しません。パスワードを間違って入力した場合やメールアドレスが存在する場合でも、ログインページにリダイレクトされます。私は、タブを閉じて、それを再び開いた後、すべて正常に動作します。

私はセッションの問題かもしれないが、私はまだこれに新しいので、私はあなたを助けることを願っています。

<?php 
session_start(); 
?> 

<!DOCTYPE html> 
<html> 
<body> 
    <?php 
    session_cache_expire(); 
    session_unset(); 
    session_destroy(); 
    header ('Location: home.php'); 
    ?> 
</html> 

ログイン:

<?php 
if(!isset($_SESSION)) { 
    session_start(); 
} 
var_dump($_SESSION); 
if(isset($_SESSION["userID"])){ 
    header("Location: home.php"); 
} 
require('dbconnect.php'); 
?> 
<!DOCTYPE html> 
<html> 
<head> 
<title> Business Bridge </title> 
</head> 
<body> 
    <div id="content"> 
     <h2> Logge Dich ein </h2> 
    <?php 
    if(isset($_GET['login'])){ 
     $email = $_POST['email']; 
     $passwort = $_POST['passwort']; 
     $statement = $pdo->prepare("SELECT * FROM users WHERE email = ?"); 
     $statement ->bindParam(1,$email); 
     $result = $statement->execute(); 
     $res = $statement->fetch(); 
     $data = $res[1] ."\n" . $res[2] . "\n"; 
     if($statement->rowCount() > 0) { 
      if (password_verify($passwort, $res[2]) && $email == $res[1]){ 
       $_SESSION['email'] = $_POST['email']; 
       $_SESSION['vname'] = $_POST['vname']; 
       $_SESSION['userlevel'] = $res[6]; 
       $_SESSION['userID'] = $res[0]; 
       header('Location: home.php'); 
      } 
      else{ 
       echo "Falsches Passwort, probiere es noch einmal!"; 
      } 
     }else{ 
      echo "Die Email Addresse gibt es nicht!"; 
     } 
     } 

    ?> 
      <form action="?login=1" method="post"> 
       E-Mail: <br> <input type="email" size="40" maxlength="250" 
       name="email"><br><br> 
      Dein Passwort:<br> <input type="password" size="40" 
       maxlength="250" name="passwort"><br><br> 
       <input id="button" type="submit" value="Send"> 
      </form> 

    </div> 
</div> 
</body> 
</html> 
<?php 
$pdo->connection = null; 
?> 

編集:問題はfalseをリダイレクトによって引き起こされた

これはログアウトコード(編集済み)です。ログアウトコードは別のログインページにリダイレクトされます。

+3

*「すべては私はタブを閉じて再度開く後に再び正常に動作します。」* - http://shouldiblamecaching.com –

答えて

-1
//Try this one in your logout.php page 

    <?php 
     session_start(); 
    ?> 
    <!DOCTYPE html> 
    <html> 
    <body> 

    <?php 
// remove all session variables 
    session_unset(); 

// destroy the session 
    session_destroy(); 
?> 

</body> 
</html> 
+0

あなたがこの場所を正確にそれを置くために、何をするかの説明の多くを提供することができ、それがなぜ助けになるのか? – Mike

+0

私はこれを試してもまだ動作しません。しかし、あなたの答えをありがとう:) –

+0

するかしない、 "試して"ありません。 ***良い答え***は、何が行われたのか、それがなぜOPのためだけでなく、将来の訪問者のためにそうした方法で行われたのかについての説明を常に持っています。 –

関連する問題