2016-06-28 19 views
0

だから私はこのコードを持っていて、うまくいきません...私を助けてくれますか?ログインフォームPHP MySqli

これは、ログインフォームです - >

<form name="login" action="entrar.php" method="post"> 
      <fieldset> 
       <label>E-mail:</label> 
       <input type="text" name="email"> 
      </fieldset> 
      <fieldset> 
       <label>Password:</label> 
       <input type="password" name="password"> 
      </fieldset> 
       <button type="submit">Login</button> 
       <a href="recuperar.html">Recuperar a Password</a> 
     </form>  

これは、それは常に間違ったエコーを返すだ>

<?php 
    if(isset($_POST['email']) && isset($_POST['password'])){ 
     $lig=new mysqli("localhost", "root", "", "dompingasbd"); 
     if($lig->connect_error==NULL){ 
      $inst=$lig->prepare("SELECT password FROM cliente WHERE email=?"); 
      $inst->bind_param("s", $_POST['email']); 
      $inst->execute(); 
      $inst->bind_result($hashBD); 
      if($inst->fetch()==TRUE && 
           password_verify($_POST['password'], $hashBD)==TRUE){ 
       $_SESSION['utilizador']=$_POST['email']; 
       echo "<p>Welcome!!!</p>"; 
      } 
      else{ 
       session_destroy(); 
       echo "<p>Wrong!</p>"; 
      } 
      $inst->close();    
      $lig->close();  
     } 
     else echo "<p>Por favor efetue o <a href='Login.php'>login</a></p>"; 
    } 
    else echo "<p>Por favor efetue o <a href='Login.php'>login</a></p>"; 
    ?> 

login-をチェックしている...あなたは間違っているどう思いますか?ありがとう

+0

ページにエラーが表示されますか?それは何を返すのですか? –

+2

あなたが 'echo $ hashBD;'を出力すると、それを 'password_verify'に手入力しただけで投稿されたパスワードで所有していればtrueを返しますか? –

+0

そのエコーを返す "

Wrong!

"データベースと同じ資格情報でログインしたとき –

答えて

0

fetch()がtrueを返すかどうかを調べるのではなく、while($ inst-> fetch())を使ってみてください。

<?php 
if(isset($_POST['email']) && isset($_POST['password'])){ 
    $lig=new mysqli("localhost", "root", "", "dompingasbd"); 
    if($lig->connect_error==NULL){ 
     $inst=$lig->prepare("SELECT password FROM cliente WHERE email=?"); 
     $inst->bind_param("s", $_POST['email']); 
     $inst->execute(); 
     $inst->bind_result($hashBD); 
     while($inst->fetch()) { 
      if (password_verify($_POST['password'], $hashBD)) { 
       $_SESSION['utilizador']=$_POST['email']; 
       echo "<p>Welcome!!!</p>"; 
      } 
      else { 
       session_destroy(); 
       echo "<p>Wrong!</p>"; 
      } 
     } 
     $inst->close();    
     $lig->close();  
    } 
    else echo "<p>Por favor efetue o <a href='Login.php'>login</a></p>"; 
} 
else echo "<p>Por favor efetue o <a href='Login.php'>login</a></p>"; 
?> 
+1

説明はありませんか?どのようなエラーのためにあなたが修正したのように? –

+0

$ inst-> bind_result($ hashBD);の部分を置換しました。 $ inst-> close(); –

+0

あなたの$ stmtは実際に$ instだと思います。 –