Так что я хэшируюсь строка «тест»не удается получить PHP password_hash апите работать
$hash = password_hash("test", PASSWORD_DEFAULT);
Сохраненное это в моем поле пароля (VARCHAR 255)
Тогда я сделал простой тест для входа страницы
if (!empty($_POST['username']) && !empty($_POST['password']))
{
$username = trim($_POST['username']);
$password = trim($_POST['password']);
$stmt = $db->prepare("SELECT username, password FROM users WHERE username = ? AND password = ?");
$stmt->execute(array($username, $password));
$row = $stmt->fetch();
$hash = $row['password'];
if (password_verify($password, $hash)) {
//success
} else {
//wrong credentials
}
Затем я ввожу свой логин и пароль test
, но возвращать ложь, когда он должен вернуть истинный (но, очевидно, им неправильно, так как это не делают, им-то здесь отсутствует)
Что я здесь делаю неправильно?
Прочитал много об этом, но я не могу понять, почему это не вернет истину. Обратите внимание, что я новичок.
Также почему соль, я думаю, первые 6 символов, которые начинаются в хеше, всегда одинаковы? $2y$10
. Это не может быть хорошо.
Ваш буквальный ввода '$ пароль 'не будет совпадать в запросе SELECT, если этот столбец содержит хэш. – mario