Попытка проверить хеш-пароль из базы данных с помощью пользовательского ввода через POST. После небольшого исследования кажется, что проблема может иметь какое-то отношение к неспособности преобразовать mysqli_query в строку, хотя я не знаю, как это сделать правильно, следовательно, fetch_object () и т. Д., Который я добавил из другого SO вопроса. Я также адекватно учел длину хэдов с колонкой, установленной для varchar (255). Спасибо за любую помощь или руководство, спасибо.
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$password = $_POST['password'];
$db_password = mysqli_query($conn, 'SELECT password FROM sec')->fetch_object()->password;
if (password_verify($password, $db_password)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
?>
Сначала получите хеш пароля из базы данных, затем преобразуйте пароль ввода пользователя в значение хеша. Сравните эти два значения, пройдя через функцию password_verify (), затем вы получите правильный результат.
$password = "test";
$hash = "$2y$10$fXJEsC0zWAR2tDrmlJgSaecbKyiEOK9GDCRKDReYM8gH2bG2mbO4e";
if (password_verify($password, $hash)) {
echo "Success";
}
else {
echo "Error";
}
OR
You can use this one too
$verify=password_verify($_POST['passwrd'],$row[2]);
if($verify){
$_SESSION["usrname"]=$usrname;
echo "Correct";
}
else {
echo "user: " . $usrname. "<br>";
echo "pass: " . $hash. "<br>";
echo "db: " . $row[2]."<br>";
echo "Wrong Username or Password";
}