PHP. password_verify всегда возвращает 0
Пишу форму авторизации, проверяю пароль с помощью password_verify(), но он всегда выводит false. Файл регистрации:
<?php
ini_set("display_errors",1);
error_reporting(E_ALL);
// data acquisition
$login = filter_var(trim($_POST['login']),
FILTER_SANITIZE_STRING);
$pass = filter_var(trim($_POST['pass']),
FILTER_SANITIZE_STRING);
// check data
if(mb_strlen($login)<5 || mb_strlen($login)>90) {
echo "Недопустимая длина логина";
exit();
} else if(mb_strlen($pass)<8) {
echo "Пароль должен содержать не менее 8 символом";
exit();
}
// password hashing
$pass = password_hash($pass, PASSWORD_BCRYPT);
$mysql = mysqli_connect('localhost:3306', 'root', '1234', 'privileged-users-bd');
$mysql->query("INSERT INTO `passwords` (`login`, `pass`) values ('$login', '$pass')") or die("Error");
$mysql->close;
header('Location: /')
?>
Файл авторизации:
<?php
mysqli_report(MYSQLI_REPORT_ALL ^ MYSQLI_REPORT_INDEX);
$login = filter_var(trim($_POST['login']),
FILTER_SANITIZE_STRING);
$pass = filter_var(trim($_POST['pass']),
FILTER_SANITIZE_STRING);
// connection
$mysqli = mysqli_connect('localhost:3306', 'root', '1234', 'privileged-users-bd');
//get login
$select_login = "select `login` from `passwords` where `login`='$login'";
$result = mysqli_query($mysqli, $select_login);
$user = $result->fetch_assoc();
$row_cnt = $result->num_rows;
// login verification
if ($row_cnt == 0){
echo 'Incorrect login.';
exit();
}
// get password
$select_password = "select `pass` from `passwords` where `login`='$login'";
$result_hash = mysqli_query($mysqli, $select_password);
$result= $result_hash->num_rows;
if( $result == 0 ){
echo 'непрошло';
exit();
} else {
$hash = $result_hash->fetch_assoc()[`pass`];
}
// password verification
if (password_verify($pass, $hash)) {
//setcookie('user',$user['login'], time() + 3600, "/");
echo 'correct';
} else {
echo 'Incorrect password.';
exit();
}
$mysqli->close();
//header('Location: /');
?>
Ответы (1 шт):
Автор решения: Alex
→ Ссылка
господи, три дня мук новичка закончены, дурацкая ошибка в ковычках
$hash = $result_hash->fetch_assoc()[`pass`];
следовало просто заменить на
$hash = $result_hash->fetch_assoc()['pass'];