@hooligan377

PASSWORD_hash как проверить, верно ли условие?

аутентификация пользователя , проверка пароля.

$user= mysqli_query($bd, "SELECT * FROM `user` WHERE `login` = '$login'");
$sql = mysqli_fetch_array($user);

if(password_verify($password, $sql['password'])){
// TRUE
}else{
// FALSE
}


Верно ли задано условие, правильно ли я сделал?
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Это очень плохой код. Только не в части password_verify, а в части выполнения SQL запроса.
Потому что здесь можно залогиниться под кем угодно, без всякого пароля. Через SQL инъекцию.

Ну и плюс этот код будет выдавать ошибку, если пользователь с таким логином не найден.

Вот как правильно проверять пароль с помощью mysqli:
$stmt = $db->prepare("SELECT * FROM user WHERE login = ?");
$stmt->bind_param("s", $login);
$stmt->execute();
$user = $stmt->get_result()->fetch_assoc();

if ($user && password_verify($password, $user['password']))
{
    echo "valid!";
} else {
    echo "invalid";
}

Здесь мы, во-первых, используем подготовленные выражения, а во-вторых, сначала проверяем, найден ли юзер с таким логином
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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