我正在做一个有关如何制作php mysql登录表单的教程。现在,该教程实际上制作得不错,我希望对它进行一些更改,并更改登录密码以存储明文而不是哈希。哈希线如下所示:
$new_password = password_hash($upass, PASSWORD_DEFAULT);
我做了:
$new_password = $upass;
出来。现在它将明文保存到数据库,但是登录无效。
登录部分看起来像这样,我看不到我希望哈希密码被转换和匹配的部分...
public function doLogin($uname,$upass)
{
try
{
$stmt = $this->conn->prepare("SELECT user_id, user_name, user_pass FROM users WHERE user_name=:uname");
$stmt->execute(array(':uname'=>$uname));
$userRow=$stmt->fetch(PDO::FETCH_ASSOC);
if($stmt->rowCount() == 1)
{
if(password_verify($upass, $userRow['user_pass']))
{
$_SESSION['user_session'] = $userRow['user_id'];
return true;
}
else
{
return false;
}
}
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
该行:
if(password_verify($upass, $userRow['user_pass']))
根据给定的密码检查密码的哈希值。删除散列功能后,它会将未散列的密码与明文密码进行比较。
更改为:
if($upass == $userRow['user_pass'])
那应该解决它。
尽管您实际上不应该存储明文密码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句