Passwort-Hashing-Problem in PHP – „password_verify()' gibt immer „false' zurück
P粉481035232
P粉481035232 2023-07-30 14:51:07
0
1
518
<p>Ich habe ein Problem mit dem Passwort-Hashing in PHP. Ich verwende die Funktion „password_hash()“, um das Admin-Passwort bei der Registrierung zu hashen und in der Datenbank zu speichern. Wenn ich mich jedoch anmelde und versuche, das Passwort mit „password_verify()“ zu überprüfen, wird immer „false“ zurückgegeben, obwohl ich sicher bin, dass das Passwort korrekt ist. </p><p>Hier ist eine Zusammenfassung meines Codes: </p><p><br /></p> <pre class="brush:php;toolbar:false;">$adminPassword = "test123"; $adminPasswordHash = passwort_hash($adminPassword, PASSWORD_BCRYPT); // ... $adminPasswordHash in der Datenbank speichern ... // Während der Anmeldung: $adminInputPassword = "test123"; $adminPasswordHashVERIFY = "$2y$10$o4qspRTirOSdyGtwHCxt6ee2i0BNChl3mEPazxVbmb534kw3ACHCm"; if (password_verify($adminInputPassword, $adminPasswordHashVERIFY)) { echo „Passwort ist korrekt!“; } anders { echo „Passwort ist falsch!“; }</pre> <p>Ich habe sichergestellt, dass $adminPassword und $adminInputPassword denselben Wert haben, aber die Validierung gibt immer false zurück. Ich habe auch versucht, die Funktion „password_hash()“ zu verwenden und PASSWORD_DEFAULT als Parameter anstelle von PASSWORD_BCRYPT zu übergeben, aber das Ergebnis war das gleiche. </p><p>Übersehe ich etwas während der Hash-Generierung oder des Verifizierungsprozesses? Jede Hilfe oder jeder Einblick in dieses Problem wäre sehr dankbar. Danke! </p><p><br /></p>
P粉481035232
P粉481035232

Antworte allen(1)
P粉099000044

我找到了问题所在!问题似乎是由于在$adminPasswordHashVERIFY变量中使用双引号(")引起的。当使用双引号时,PHP会解释字符串并替换其中的变量。由于没有名为$fReIQ的变量,PHP将其视为未定义的变量,导致验证时产生错误的哈希值。

要解决这个问题,在$adminPasswordHashVERIFY变量中使用单引号(')引起哈希密码。这样可以确保哈希密码被视为普通字符串,而不是由PHP解释。

现在,如果你尝试以下代码,你将得到输出"密码正确!"。


<?php
$adminPassword = "test123";
$adminPasswordHash = password_hash($adminPassword, PASSWORD_BCRYPT);

$adminInputPassword = "test123";
$adminPasswordHashVERIFY = '$2y$10$o4qspRTirOSdyGtwHCxt6ee2i0BNChl3mEPazxVbmb534kw3ACHCm';

if (password_verify($adminInputPassword, $adminPasswordHashVERIFY)) {
    echo "Password is correct!";
} else {
    echo "Password is incorrect!";
}

?>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage