无法在PHP中验证密码
在这个项目中,我使用BCRYPT对密码进行了哈希处理 登录时,用户通常不会出现任何错误或其他任何情况,但在尝试更改密码时,您当前的密码与数据库中的密码不匹配(当然,我使用无法在PHP中验证密码,php,hash,bcrypt,verify,Php,Hash,Bcrypt,Verify,在这个项目中,我使用BCRYPT对密码进行了哈希处理 登录时,用户通常不会出现任何错误或其他任何情况,但在尝试更改密码时,您当前的密码与数据库中的密码不匹配(当然,我使用password\u verify()来验证这两个密码) 以下是我的代码片段: $option = ['cost' => 12]; $password = password_hash($_currentpassword, PASSWORD_BCRYPT, $option); $selectpasswordsq
password\u verify()
来验证这两个密码)
以下是我的代码片段:
$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:这是我的代码的完整副本。您不需要在第二行散列
$\u currentpassword
变量
只需将变量传递给
password\u verify
函数,函数本身就可以完成任务。您不需要在第二行散列$\u currentpassword
变量
只需将变量传递给
password\u verify
函数,函数本身就可以完成任务。password\u verify将散列我的当前密码
,因此确实需要它。为什么你认为它不需要呢?我添加了一个链接来查看我的全部代码,如果你需要password\u varify
做它需要做的事情,检查它,它不需要从外部散列密码。只需从数据库中传递用户提交的密码和旧密码,就可以了。更多信息:500。。。。。。。为什么?手册建议255是个不错的选择;密码散列永远不会产生超过255的结果。谢谢!就我所关心的效率而言,varchar(255)
最适合低消耗的spacepassword\u verify将散列我的当前密码
,因此确实需要它。为什么你认为它不需要呢?我添加了一个链接来查看我的全部代码,如果你需要password\u varify
做它需要做的事情,检查它,它不需要从外部散列密码。只需从数据库中传递用户提交的密码和旧密码,就可以了。更多信息:500。。。。。。。为什么?手册建议255是个不错的选择;密码散列永远不会产生超过255的结果。谢谢!就我所关心的效率而言,varchar(255)
对于低消耗空间来说是最好的