Heim Backend-Entwicklung PHP-Tutorial Warum schlägt die PHP-Passwortüberprüfung fehl, wenn der Passwort-Hash nicht übereinstimmt?

Warum schlägt die PHP-Passwortüberprüfung fehl, wenn der Passwort-Hash nicht übereinstimmt?

Oct 21, 2024 am 07:04 AM

Why does PHP password verification fail with a password hash mismatch?

PHP passwort_hash(), passwort_verify()

In Ihrem Registrierungsskript hashen Sie das Passwort korrekt mit passwort_hash() und speichern es in die Datenbank. Wenn Sie jedoch das Passwort während der Anmeldung mit „password_verify()“ überprüfen, stoßen Sie auf eine Nichtübereinstimmung.

Das von Ihnen bereitgestellte Snippet zeigt, dass das in der Datenbank gespeicherte Passwort gehasht ist (beginnend mit „$2y$10$“). , während das vom Benutzer eingegebene Passwort im Klartext vorliegt (string(1) „1“). Das Problem liegt in der Art und Weise, wie Sie das Passwort aus der Datenbank abrufen.

Im Anmeldeskript rufen Sie die Passwortspalte ohne weitere Verarbeitung direkt aus dem Datenbankergebnis ab. Das gespeicherte Passwort ist jedoch gehasht und muss enthasht werden, bevor es mit dem Klartext-Passwort verglichen werden kann, das der Benutzer mit „password_verify()“ eingegeben hat.

Lösung:

Im Anmeldeskript müssen Sie vor der Verwendung von „password_verify()“ das gespeicherte Hash-Passwort aus der Datenbank abrufen und es dann mithilfe der Funktion „password_hash()“ mit dem Algorithmus „PASSWORD_DEFAULT“ enthashen. Hier ist der korrigierte Code für das Anmeldeskript:

<code class="php">// ...same code as before...

$stored_hash = $row['password']; // Retrieve the stored hashed password
if (password_verify($pwd, $stored_hash)) {
    // ...same code as before...
}</code>

Diese Änderung stellt sicher, dass das in der Datenbank gespeicherte Passwort ordnungsgemäß enthasht wird, bevor es mit dem vom Benutzer eingegebenen Klartext-Passwort verglichen wird, sodass „password_verify()“ funktioniert richtig.

Das obige ist der detaillierte Inhalt vonWarum schlägt die PHP-Passwortüberprüfung fehl, wenn der Passwort-Hash nicht übereinstimmt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Stock Market GPT

Stock Market GPT

KI-gestützte Anlageforschung für intelligentere Entscheidungen

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie man mit Arrays in PHP arbeitet Wie man mit Arrays in PHP arbeitet Aug 20, 2025 pm 07:01 PM

PhparrayShandledatacollectionSeffictionlyusingInedorassociativestruationen;

Beschreiben Sie das Beobachter -Designmuster und seine Implementierung in PHP. Beschreiben Sie das Beobachter -Designmuster und seine Implementierung in PHP. Aug 15, 2025 pm 01:54 PM

TheobserverdesignPatternNenableAtomaticnotificationOfDependentObjectSwhenasubjectsSstatechanges.1) itdefinesaon-to-ManyDependencyBetobjects; 2) thesubjectmaintainSalistoBoBserverSandnotifiesthemviaAcommonNection;

So verwenden Sie die Variable $ _cookie in PHP So verwenden Sie die Variable $ _cookie in PHP Aug 20, 2025 pm 07:00 PM

$ _Cookieisaphpsuperglobalfor AccessingcookieStbytheBrowser; CookiesAresetusingsetcookie () vor dem Output, Readvia $ _cookie ['name'], aktualisiert Byresending mit den Sekton, mit SCURITYBESTPRACTICING, MIT SECURITYBESTPRACTICICING, MIT SECURITYBESTPRECTICE

Erläutern Sie die Datenbank-Indexierungsstrategien (z. B. B-Tree, Volltext) für eine MySQL-unterstützte PHP-Anwendung. Erläutern Sie die Datenbank-Indexierungsstrategien (z. B. B-Tree, Volltext) für eine MySQL-unterstützte PHP-Anwendung. Aug 13, 2025 pm 02:57 PM

B-treeIndexesarebestFormOstPhpapplications, als Theysupportequality und RangeQueries, Sorting und saridealforcolumnSusedinwhere, Join, ORORDBYCLAUSS;

Was sind öffentlich, privat und in PHP geschützt Was sind öffentlich, privat und in PHP geschützt Aug 24, 2025 am 03:29 AM

Auf öffentliche Mitglieder können nach Belieben zugegriffen werden. 2. private Mitglieder können nur innerhalb der Klasse zugegriffen werden. 3.. Geschützte Mitglieder können in Klassen und Unterklassen zugegriffen werden. 4. Die rationale Verwendung kann die Sicherheit und die Wartbarkeit der Code verbessern.

Wie bekomme ich das aktuelle Datum und die aktuelle Uhrzeit in PHP? Wie bekomme ich das aktuelle Datum und die aktuelle Uhrzeit in PHP? Aug 31, 2025 am 01:36 AM

Usedate ('y-m-dh: i: s') witdate_default_timezone_set () togetcurrentDateAnDimeInphp, um sicherzustellen, dass AccurateresultsbySettingThedEredTimeZonelike'america/New_York'beForecallingDate () () sicherstellt.

Wie man mit Daten und Zeiten in PHP arbeitet Wie man mit Daten und Zeiten in PHP arbeitet Aug 20, 2025 pm 06:57 PM

UsedatetimefordateInphp: createwitheNewdatetime (), formatwithFormat (), modifyviaadd () modify (), setTimezoneswithDatetimezone und CompareUSUKTERSORDERSordiff () Togetintervals.

So führen Sie eine Update -Abfrage in PHP aus So führen Sie eine Update -Abfrage in PHP aus Aug 24, 2025 am 05:04 AM

Mithilfe von mySQLI-objektorientierter Methode: Erstellen Sie eine Verbindung, Vorprozess-Update-Anweisungen, binden Sie Parameter, führen Sie die Ergebnisse aus und überprüfen Sie sie schließlich die Ressource. 2. Mithilfe der MySQLI -Prozedurmethode: Verbindung mit der Datenbank über Funktionen herstellen, Anweisungen vorbereiten, Parameter binden, Aktualisierungen durchführen und die Verbindung nach Verarbeitungsfehlern schließen. 3.. Verwenden Sie PDO: Stellen Sie eine Verbindung zur Datenbank über PDO ein, setzen Sie den Ausnahmemodus, stellen Sie SQL vor, binden Sie Parameter, führen Sie Aktualisierungen durch, verwenden Sie Try-Catch, um Ausnahmen zu verarbeiten und schließlich Ressourcen zu veröffentlichen. Verwenden Sie immer Vorverarbeitungsanweisungen, um die SQL -Injektion zu verhindern, die Benutzereingabe zu überprüfen und Verbindungen in der Zeit zu schließen.

See all articles