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.
Hier ist eine Zusammenfassung meines Codes:
$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!“; }
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.
Übersehe ich etwas während der Hash-Generierung oder des Verifizierungsprozesses? Jede Hilfe oder jeder Einblick in dieses Problem wäre sehr dankbar. Danke!
我找到了问题所在!问题似乎是由于在$adminPasswordHashVERIFY变量中使用双引号(")引起的。当使用双引号时,PHP会解释字符串并替换其中的变量。由于没有名为$fReIQ的变量,PHP将其视为未定义的变量,导致验证时产生错误的哈希值。
要解决这个问题,在$adminPasswordHashVERIFY变量中使用单引号(')引起哈希密码。这样可以确保哈希密码被视为普通字符串,而不是由PHP解释。
现在,如果你尝试以下代码,你将得到输出"密码正确!"。