2017-07-21 218 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; 
?> 

编辑:这个问题是由错误的重定向引起的。注销代码将重定向到不同的登录页面。

+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,还是为了将来访问SO。 –