即使输入正确的密码,php函数password_verify()也会返回false no。
我尝试了PASSWORD_DEFAULT和PASSWORD_BCRYPT来为注册用户生成密码,但是它们都不与password_vertify($ pass,$ hash)匹配;
这是我正在使用的类函数,用于为用户设置密码的哈希值。
function checkIfPasswordValid($userPass, $userValidatePass)
{
if($userPass === $userValidatePass)
{
$this->userPass = password_hash($this->userPass, PASSWORD_BCRYPT);
return true;
}
else
{
return false;
}
}
成功注册后,我根据用户的电子邮件查询数据库中的密码:
function vertifyPass($userEmail, $userPass)
{
$sqlStatement = "SELECT user_pass FROM user WHERE user_email = :userEmail";
$preparedStatement = $this->db->prepare($sqlStatement);
$preparedStatement->bindParam(':userEmail', $userEmail);
if($preparedStatement->execute())
{
$userData = $preparedStatement->fetch();
$verify = password_verify($userPass, $userData['user_pass']);
if($verify)
{
session_start();
$_SESSION['user_email'] = $userEmail;
header('Location: /profile.php');
}
else
{
echo "The username and password combinations was incorrect.";
}
}
哈希成功返回$ userData ['user_pass']。但是返回的哈希值将与为其提供的任何密码都不匹配。
预期结果是从数据库中获取哈希值,并将其与输入的密码进行比较,以便检索对profile.php页面的访问。