为什么password_verify无法正常工作(无法验证)?

时间:2019-10-20 22:06:03

标签: php mysql passwords

即使输入正确的密码,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页面的访问。

0 个答案:

没有答案