php密码重置失败

时间:2018-05-14 08:56:01

标签: php password-encryption

我正在升级php登录系统以使用password_hash()。我从以下测试文件开始生成哈希:

$password="aaaaaaaa";
$hash = password_hash($password, PASSWORD_DEFAULT);
echo $hash."<br>";

if (password_verify($password, $hash)) {echo "Valid";}
else {echo "Invalid";} 

然后我将屏幕上的哈希值直接复制并粘贴到db(mysql varchar(255)。登录时我验证:

if (password_verify($password, $hash)) {
$passwordIsValid=true;
//echo "VALID PASSWORD";
} else {
$passwordIsValid=false;
//echo "INVALID PASSWORD";
}

$ hash是从db获得的哈希值。这样可以正确验证我复制和粘贴的哈希值。

但是我添加了一个丢失的密码脚本,用户在其中输入新密码,然后通过AJAX将其发送到第二个脚本,这样就会输入密码:

$password=$_POST["password"];
$hash = password_hash($password, PASSWORD_DEFAULT);
if (password_verify($password, $hash)) 
{//write to db using PDO/prepared statements}
else {
echo "Invalid credentials";
exit();
}

当我尝试在密码更改后尝试登录时,password_valid()每次都返回false。如果我回去复制并粘贴它,那么就可以正确验证。

有人可以指出问题出在哪里吗?

1 个答案:

答案 0 :(得分:1)

为您的密码添加修剪。

$password = trim($_POST["password"]);

并确保拥有良好的enctype(ISO,UTF ......但无处不在)。