Как работает password_verify?

<form action='login.php' method='POST'>
<p id='p-class'>Вход:</p>
<br>
<p id='p-class'>Имя:</p>
<input type='text' name='login2' id='in' required='required'><br><br>
<p id='p-class'>Пароль:</p>
<input type='text' name='password2' id='in' required='required'><br><br>
<button type='submit' name='submit-log' id='subb'>Войти</button><br><br>
</form>

<?php 
  require "db.php";
$login2 = $_POST['login2'];
$password2 = $_POST['password2']; 
    var_dump($password2);
    if (isset($_POST['submit-log'])) {
    $query2 = "SELECT password FROM users WHERE login ='$login2' LIMIT 1";
    #var_dump($query2);
    $query2 = mysqli_query($connect, $query2);
    if( $query2->num_rows ){
    if (password_verify($password2, $query2)) {
    echo "<div style='color:green; font-family: 'Lobster', cursive;'>Вы успешно вошли!</div>";
    
    }else{
      echo "<div style='color:red; font-family: 'Lobster', cursive;'>Пароли не совпадают!</div>";
    }
    }else{
      echo "<div style='color:red; font-family: 'Lobster', cursive;'>Пользователь не найден!</div>";
    }
    } ?>

Вот есть код, в бд существует пароль, с которым необходимо сравнить введённый пароль, но при выполнении кода выводит:
Warning: password_verify() expects parameter 2 to be string, object given in /home/.../login.php on line 56

Путь к файлу сократил.
  • Вопрос задан
  • 1944 просмотра
Решения вопроса 2
@D3lphi
<?php 
require "db.php";
$login2 = $_POST['login2'];
$password2 = $_POST['password2']; 
var_dump($password2);
if (isset($_POST['submit-log'])) {
    $query2 = "SELECT password FROM users WHERE login ='$login2' LIMIT 1";
    #var_dump($query2);
    $query2 = mysqli_query($connect, $query2);
    if( $query2->num_rows ){
        $hash = $query2->fetch_assoc()['password'];

        if (password_verify($password2, $hash)) {
            echo "<div style='color:green; font-family: 'Lobster', cursive;'>Вы успешно вошли!</div>";
        }else{
            echo "<div style='color:red; font-family: 'Lobster', cursive;'>Пароли не совпадают!</div>";
        }
    }else{
      echo "<div style='color:red; font-family: 'Lobster', cursive;'>Пользователь не найден!</div>";
    }
}
Ответ написан
Комментировать
sanek_os9
@sanek_os9
Работаю с Laravel, Vue, Vuetify, AWS Amazon, Linux
В первый параметр ф-ции нужно вставить пароль введенный с формы, во второй параметр хэш который сохраненный в БД.
// See the password_hash() example to see where this came from.
$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';

if (password_verify('rasmuslerdorf', $hash)) {
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы