PHP - password_verify Problem
Ich habe über 2 Stunden lang meinen Kopf darauf gekratzt. Ich habe Artikel über Stackoverflow recherchiert, darunter:
Problem mit Bcrypt, das nicht richtig überprüft
php password_hash und password_verify stimmen nicht überein
Der Aufruf `password_verify` gibt false zurück, um das korrekte Passwort zu erhalten
Und ich konnte mein Problem nicht beheben. Ich würde mich über eine Anleitung freuen, wie sehr ich ein Idiot bin:
Funktion zum Einfügen von Daten in die MySQL-Datenbank:
function insertUser($userObj) {
$query = $this->databaseConnection->getStntPrepare()->prepare(
"INSERT INTO user(username, userpassword) VALUES (?,?);");
$username = $userObj->getUsername();
$password = password_hash('testing1234', PASSWORD_BCRYPT);
$query->bind_param('ss', $username, $password);
}
Überprüfung der Benutzeranmeldung durch Abrufen von Daten aus MySQL:
function findUser($userObj) {
$query = $this->databaseConnection->getStntPrepare()->prepare(
"SELECT userid, userpassword
FROM user
WHERE username=?");
$pass = 'testing1234'
$query->bind_param('s', $userObj->getUsername());
$query->execute();
$query->bind_result($userid, $hash);
while ($query->fetch()) {
if (password_verify($pass, $hash)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
}
}
Beim Ausführen erhalte ich "Ungültiges Passwort".
Wenn ich das Folgende mache, ohne es in die Datenbank einzufügen, dann rufe ich Folgendes ab:
$hash = password_hash('testing1234', PASSWORD_BCRYPT);
if (password_verify('testing1234', $hash)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
Ich bekomme 'Passwort ist gültig!'
Ich glaube, mein Problem hat etwas mit einfachen und doppelten Anführungszeichen und der Interpretation des Dollarzeichens ($) im Passwortfeld zu tun, als Variable statt als Literal (wie in einem Artikel vorgeschlagen) beim Speichern / Abrufen aus der MySQL-Datenbank Ich hatte kein Glück bei der Lösung. Unten ist der Hash-Wert von "testing1234":
$ 2y $ 10 $ 1 / oQEuYX67n.U3usxH.7tenNq7hT2dKyBSIZsy5xR3W