首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在PHP中验证密码

无法在PHP中验证密码
EN

Stack Overflow用户
提问于 2017-02-11 15:44:35
回答 1查看 553关注 0票数 0

在这个项目中,我使用BCRYPT对密码进行散列

登录时,用户通常登录时没有任何错误或任何情况,但当试图更改密码时,您当前的密码与数据库中的密码不匹配(当然,我正在使用password_verify()来验证这两个密码)

下面是我的代码片段:

代码语言:javascript
运行
复制
  $option = ['cost' => 12];
  $password = password_hash($_currentpassword, PASSWORD_BCRYPT, $option);

  $selectpasswordsql = "SELECT `password` FROM `auth` WHERE username=?";
  $selectpasswordstmt = $conn->prepare($selectpasswordsql);
  $selectpasswordstmt->execute(array($_SESSION['account']['username']));
  $selectpasswordresults = $selectpasswordstmt->fetch(PDO::FETCH_ASSOC);

  $databasepass = $selectpasswordresults['password'];
  $databasepass = trim($databasepass);
  if(password_verify($password,$databasepass)){
    if(empty($passmsgs)){
      $updatepasssql = "UPDATE `auth` SET
        `password`=?
      WHERE username=?
      ";
      $updatepassstmt = $conn->prepare($updatepasssql);
      $updatepassstmt->execute(array($password, $_SESSION['account']['username']));
      if($updatepassstmt){
        array_push($passmsgs, 'Successfully updating your password!');
      } else {
        array_push($passmsgs, 'There was a problem executing your command!');
      }
    }
  } else {
    array_push($passmsgs, 'Your current password is wrong!');
  }

尝试此操作将导致将当前密码与密码不匹配的错误。

编辑:是的,我使用的是最大长度为255的VARCHAR

编辑2:这是我的代码的完整副本的链接

EN

Stack Overflow用户

回答已采纳

发布于 2017-02-11 15:48:08

不需要在第二行散列$_currentpassword变量。

只要将变量传递给password_verify函数,函数本身就会完成这项工作。

票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42177789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档