Ich kann das nicht zur Arbeit bringen. Ich bin neu im Umgang mit vorbereiteten Aussagen, also bin ich 50/50 was ich mache.Hash-Passwort mit vorbereiteten Anweisungen erhalten
Nach der Registrierung wird das Passwort mit password_hash($pass,PASSWORD_DEFAULT)
Jetzt gehasht, ich versuche, meine Login-Seite zu bekommen, dies zu funktionieren, aber ich weiß nicht, wo/wie es schreiben mit den password_verify()
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT * FROM users WHERE BINARY username=? AND password=?";
$stmt = $db->prepare($sql);
$stmt->bind_param("ss",$username,$password);
$stmt->execute();
$result = $stmt->get_result();
$num_rows = $result->num_rows;
if($num_rows == 1){
$rows = $result->fetch_assoc();
if(password_verify($password, $rows['password'])){
$_SESSION['loggedin'] = $username;
$_SESSION['country'] = $rows['country'];
$_SESSION['email'] = $rows['email'];
$_SESSION['avatar'] = $rows['u_avatar'];
$_SESSION['is_gm'] = $rows['is_gm'];
$_SESSION['user_lvl'] = $rows['user_lvl'];
$_SESSION['totalposts'] = $rows['post_total'];
$_SESSION['totalcoins'] = $rows['coins_total'];
$_SESSION['totalvotes'] = $rows['vote_total'];
$_SESSION['secquest'] = $rows['sec_quest'];
$_SESSION['secanswer'] = $rows['sec_answer'];
$_SESSION['join_date'] = $rows['join_date'];
header("Location: /index.php");
exit();
}
} else {
echo "<p class='error_msg'>No accounts could be found with the given credentials.</p>";
}
$stmt->free_result();
$stmt->close();
$db->close();
Ich würde davon ausgehen, dass das Passwort überprüfen würde vor if($num_rows == 1)
aber wie gesagt, ich habe keine Ahnung. im Wesentlichen
Sie können das Passwort aus der Datenbank nicht so auswählen. In der SELECT-Anweisung versuchen Sie, das Klartextkennwort mit dem Hashwert zu vergleichen. – Devon
Wenn Sie Ihre andere Frage http://stackoverflow.com/q/39781691/ sehen, wo Sie md5 zum Speichern von Passwort-Hashes verwendet haben, wette ich, dass Ihre Passwortspalte nicht lang genug ist. Wenn es etwas <60 ist, versagt es hier still. Wenn ja, müssen Sie erneut mit neuen gespeicherten Hashes beginnen. Ich bin (ziemlich) zuversichtlich über diese "Antwort". Was ist der Wert einer gespeicherten Hash-BTW und Länge einschließlich der Länge der Passwortspalte? –
Ich habe bereits die Gelegenheit genutzt, nachdem meine vorherige Frage beantwortet wurde und änderte die Länge auf 150, so kann es nicht sein. @ Fred-ii- – Synyster