2016-06-28 86 views
0

所以我有這個代碼,它不工作...你能幫我嗎?登錄表格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>"; 
    ?> 

它總是返回錯誤的回聲......你覺得是錯的?謝謝

+0

它是否產生頁面上顯示的錯誤?它回來了什麼? –

+2

當你'echo $ hashBD;'它輸出了什麼內容,如果你只是手動把它放在'password_verify'上並且發佈密碼,它會返回true嗎? –

+0

它返回回聲「

錯誤!

」當我用完全相同的憑據登錄與數據庫 –

回答

0

嘗試使用while($ inst-> fetch())而不是檢查fetch()是否返回true。

<?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。 –