我正在尝试检查密码是否正确。密码位于数据库中并进行哈希处理。我确定与数据库的连接工作,因为其他查询没有问题。 所以我的问题是,它总是返回$ password == false,当密码应该是正确的时候。
这是我的代码:
public function checkOldPwd($user_name, $pwd) {
$query = "SELECT 'user_pwd' FROM users WHERE user_name = ?";
$statement = ConnectionHandler::getConnection()->prepare($query);
$statement->bind_param('s', $user_name);
$statement->execute();
$result = $statement->get_result();
if(!$result) {
throw new Exception($statement->error);
}
if (password_verify($pwd, $result)) {
$password = true;
}else{
$password = false;
}
$result->close();
return $password;
}
我希望你能帮助我。
答案 0 :(得分:-1)
我想删除这个:
$user !== false &&
这是在password_verify
答案 1 :(得分:-1)
您忘记取$result
的第一行,其中$user
已定义。
$result = $statement->get_result();
if(!$result) {
throw new Exception($statement->error);
}
$user = $result->fetch_array(MYSQLI_ASSOC);
if ($user !== false && password_verify($pwd, $user['pwd_column_name'])) {
$password = true;
}else{
$password = false;
}