Bevor ich anfange, werde ich feststellen, dass ich im Moment mit der alten MySQL-API feststecke.Wie kann ich ein verschlüsseltes Passwort in einer Anfrage verwenden?
Ich benutze diese Funktion für die Passwort-Erstellung.
$password = $_POST[password];
$passwordhashed = password_hash($password, PASSWORD_DEFAULT);
aber jetzt brauche ich wie diese eine Abfrage auszuführen:
$query_f = mysql_query("SELECT fiscal FROM list WHERE password='$password'");
aber natürlich kann ich nicht $password
verwenden, weil in der Datenbank ist es mit einem zufälligen Salz verschlüsselt. Also, wie mache ich das?
Das ist nicht, was ich eigentlich tun werde. Aus den Gründen, mit denen ich dich nicht belästigen möchte, würde ich gerne wissen, ob es möglich ist und wie.
Schauen Sie sich die Beispiele [password_verify] (http://php.net/password_verify) an. Normalerweise würden Sie Ihre Datenbank mit dem Benutzernamen abfragen (warum Sie nach dem Passwort fragen, von dem ich keine Ahnung habe) und dann password_verify verwenden, um das bereitgestellte Passwort (einfach) mit dem aus der DB zurückgegebenen Hash zu vergleichen. –
Beenden Sie die Verwendung der ** veralteten und ab PHP7 entfernten ** mysql_ * -Funktionen. Migrieren Sie zu PDO und verwenden Sie vorbereitete Anweisungen. –
Um Ihre Frage zu beantworten: Nein, das ist nicht möglich. Jedes Mal, wenn Sie 'password_hash' verwenden, generiert PHP automatisch ein sicheres Salz und macht jedes Mal, wenn Sie das Passwort hashen, einen anderen Hashwert (auch wenn es derselbe ist). Sie müssen eine eindeutige Kennung (wie Benutzername oder E-Mail) verwenden und dann mit "password_verify" prüfen, ob das angegebene (normale) Passwort mit der gespeicherten Hash-Darstellung übereinstimmt. –