Выполнение школьного задания, так что это, вероятно, тривиальный вопрос.
Пользователи могут создавать учетные записи на моем «сайте». Я храню их пароли с помощью password_hash()
. Итак, на странице входа я использую
$hash = password_hash($password, PASSWORD_DEFAULT);
Где $password
- пароль, который пользователь вводит в форму.
На данный момент все работает отлично, сохраняется хешированный пароль (у меня ограничение в 255 символов, поэтому с размером нет проблем). Однако, когда я в своей форме входа хочу использовать password_verify()
, у меня возникают проблемы. Небольшой фрагмент кода:
$email = $_POST["email"];
$password = $_POST["password"];
$sql = "SELECT password FROM user WHERE email = $email";
$result = mysqli_query($conn, $sql);
if (password_verify($password, $result))
{
echo 'Successful!';
}
else
{
echo 'Unsuccessful!';
}
$result
в данном случае хешированный пароль из моей базы данных.
Когда я var_dump($result)
получаю bool(false)
. Я просто неправильно понимаю функции или просто испортил свой запрос?
1 ответ
Попробуйте что-то вроде этого:
$sql = "SELECT password FROM user WHERE email = '$email'";
$query = mysqli_query($conn, $sql);
$result = mysqli_fetch_assoc($query);
$hash = $result['password'];
if (password_verify($password, $hash))
{
echo 'Successful!';
}
else
{
echo 'Unsuccessful!';
}
- Вы не получили результатов.
- Если вы помещаете в запрос переменную, которая является строкой, вы должны использовать кавычки.
Похожие вопросы
Новые вопросы
php
PHP - это широко используемый высокоуровневый, динамический, объектно-ориентированный и интерпретируемый язык сценариев, в первую очередь предназначенный для серверной веб-разработки. Используется для вопросов о языке PHP.
$result
- это набор результатов, а не строковое значение ..... вам нужно получить строку из набора результатов (используя функцию mysqli_fetch *), а затем получить доступ к элементу пароля в этой строке - php.net/manual/en/class.mysqli-result.php