2016-05-07 10 views
0

Ich habe ein Problem mit der Passwortprüfung. Ich versuche, einen Hash aus meiner Passwortspalte zu holen und dann mit dem Passwort aus dem Formular zu überprüfen. Ich bin mir nicht sicher, warum es nicht funktioniert:Passwort-Hash konnte nicht von MySQL abgerufen werden

 $pass = mysqli_query($link, "SELECT password FROM male_users WHERE email=$email"); 
     $hash = mysqli_fetch_assoc($pass); 
     if (password_verify($password, $hash)) { 
      echo('Hello'); 
     } else { 
      echo('Email or Password not mach'); 
     } 

Es stellt sich einen Fehler zurück: mysqli_fetch_assoc() erwartet Parameter 1 werden MySQLi_Result, boolean gegeben, aber ich fand auf dem Stapel, die Menschen erfolgreich, dass verwendet. Was mache ich falsch? Thnx im Voraus! Mit freundlichen Grüßen

+2

Erfahren Sie, wie Sie Anführungszeichen verwenden. –

+0

Haben Sie wirklich unterschiedliche Datenbanktabellen für Benutzer basierend auf ihrem Geschlecht? –

+0

'where email = '$ email'' – Dale

Antwort

1

versuchen Sie dies und Ihre mysqli_fetch_assoc return array verwenden Sie also $ hash ['password'] anstelle von $ hash und verwenden Sie schließlich einfache Anführungszeichen in where Bedingung.

$pass = mysqli_query($link, "SELECT password FROM male_users WHERE email='$email'"); 
    $hash = mysqli_fetch_assoc($pass); 
    if (password_verify($password, $hash['password'])) { 
     echo('Hello'); 
    } else { 
     echo('Email or Password not mach'); 
    }