Ich versuche herauszufinden, wie man password_hash bei Registrierungs- und Anmeldesystemen verwendet.Wie benutze ich password_hash? Registrieren und Login
Momentan benutze ich password_hash, um meine Benutzer zu registrieren.
$pass = $_POST['Pass'];
$hashed_password = password_hash($pass, PASSWORD_DEFAULT);
$stmt = $conn->prepare("INSERT INTO `usuario`(`Nick`, `Nombre_u`, `Apellidos`, `e-mail`, `Password`, `Domicilio`, `Colonia`, `Codigo_Postal`, `Cuidad`, `Estado`, `Telefono`) VALUES (?, ?, ?, ?, ?, ? , ?, ?, ?, ?, ?)");
$stmt->bind_param("sssssssisss", $nick, $nombre, $apellidos, $mail, $hashed_password, $domicilio, $colonia, $cp, $cuidad, $estado, $telefono);
$stmt->execute();
header("Location: ../Registrado.php?Done=Welcome");
Und ich logge meine Benutzer auf diese Weise.
Die Art, wie ich verstehe Es ist, dass meine Abfrage so etwas tun wird.
Zuerst nehme ich meine Eingabe zB: "123
", dann hashed_password wird meine Eingabe in zB: "$2y$10$BvFW3ott5f7JvZ4rCa
", und meine Abfrage wird seine Arbeit so machen.
SELECT Nick, Password FROM usuario WHERE Nick = 'User' AND Password= '$2y$10$BvFW3ott5f7JvZ4rCa'
Aber ich bin immer noch auf mein Login-Formular zurück, anstatt meinen Benutzer einzuloggen.
Was mache ich falsch?
Anmeldung bei SELECT erfordert 'password_verify()' und nicht 'password_hash()'. –
plus, die Länge Ihrer Passwortspalte ist zu kurz. Am besten gehen Sie zurück zum Lesen der Handbücher und folgen Sie der Syntax "auf den Buchstaben". –
'password_hash()' erzeugt bei jeder Verwendung einen anderen Hash, auch für das gleiche Passwort. Sie müssen den Passwort-Hash für den Benutzernamen erhalten und dann, wie die anderen Kommentare, überprüfen Sie es stattdessen mit 'password_verify()' in Ihrem Code. –