2016-08-21 5 views
-2

Ich bekomme ein ungültiges Passwort durch Ausführen dieses Codes. Warum stimmt das Passwort nicht mit dem Hash überein?passwort_hash() funktion auf php/bekommen ungültiges passwort

<?php 
    $passwd = "imad"; 
    $hash = password_hash($passwd,PASSWORD_DEFAULT,['cost'=>10]); 
    echo "$passwd".' :'.$hash."<br/><br/>"; 


    if (password_verify($passwd, $hash,['cost'=>10])) { 
     echo 'Password is valid!'; 
    } else { 
     echo 'Invalid password.'; 
    } 
?> 
+0

Wie sieht das Hash aus? Enthält es '$'? – RamRaider

+3

'if (password_verify ($ passwd, $ hash)) {//}' ist genug, es gibt keinen 3. Parameter beim Verifizieren. – Ekin

+0

Weil Sie 'error_reporting' nicht angezeigt haben oder Sie haben' display_errors' nicht aktiviert, oder Sie haben das Handbuch gerade nicht gelesen. [password_verify'] (http://php.net/password-verify) benötigt genau 2 Argumente. Sie übergeben 3 Argumente. Dies bedeutet, dass die Funktion nicht zurückkehrt und stattdessen einen Fehler auslöst. – Sherif

Antwort

0

password_verify erwartet genau 2 Parameter.

So brauchen Sie nur zu tun:

if(password_verify($passwd, $hash)) { ... } 

Und der obige Code kann verkürzt werden: durch Verwendung ternary operators

(password_verify($passwd, $hash)) ? : echo "Password is valid!" : echo "Password is invalid." 

.


Auch Drehen error_reporting eine gute Idee ist, in der Regel bei der Entwicklung.

So setzen:

ini_set("display_errors", "1"); 
error_reporting(E_ALL); 

, dass am Anfang der Datei.

Und wenn Sie das in eine Produktionsphase verschieben, entfernen Sie sie.

+0

Tnx Herr, du hast meinen Tag gemacht: d –

Verwandte Themen