php password_verify () Hash und Pass stimmen nicht überein

Ich speichere meine Passwörter mit password_hash () in meiner Datenbank und versuche, die Passwörter beim Anmelden mit password_verify () zu überprüfen. Aus irgendeinem Grund gibt password_verify () immer wieder false zurück.

Ich habe die Dokumentation zu dieser Funktion gelesen und es wurde gesagt, dass sichergestellt werden soll, dass der in der Funktion verwendete Hash zwischen einfachen Anführungszeichen steht. Andernfalls wird der Hash so gelesen, als wären es drei Variablen aufgrund der $. Deshalb habe ich versucht, $ zu schreiben gültig wie folgt '$ valid'. Aber das hat nicht funktioniert.

Wenn ich $ valid als Echo gebe, ist die Ausgabe $ 2y $ 10 $ zzZCN7UlukvY2skb3ELVp.4y3Oc7NJTEsFyqdstqYxT

Wenn ich $ check echo, ist die Ausgabe 123. Dies ist das Passwort, mit dem das Konto erstellt wurde.

Dies ist der Teil meiner login.php, und hier sehe ich das Problem.

$emailLogin = mysqli_real_escape_string($con, $_POST['emailLogin']);

$passLogin = mysqli_real_escape_string($con, $_POST['passLogin']);

$query = "SELECT `pass` FROM `user` WHERE `email`='$emailLogin'";

$result = mysqli_query($con, $query);

$row = mysqli_fetch_array($result);

$pass = $row['pass']; 

$key = VUP($passLogin, $pass);

Dies ist Teil meiner verify.php

function VUP($check, $valid){

if (password_verify($check, $valid)) {
$key = 1;

} else {
echo 'Invalid password.';
$key = 0;
die();
}
return $key;

}

Auch ein Teil von verify.php

function SHP($password){

$hash = password_hash('$password', PASSWORD_BCRYPT);

return $hash;

}

eder Rat wäre sehr hilfreic

Antworten auf die Frage(2)

Ihre Antwort auf die Frage