我的数据库密码和用户填写的密码不匹配

22 浏览
0 Comments

我的数据库密码和用户填写的密码不匹配

我有一个关于我的php登录文件的问题。我通过检查电子邮件来从数据库中获取密码。当我获得这个密码后,我会将其与用户填写的密码进行比较。

password_verify($Passwd, $row['Passwd'])中,结果总是返回0,但结果应该返回1(密码匹配)。

为什么我的密码不匹配?

登录代码:


注册代码:


Passwd是数据库中的varchar(50)列。

0
0 Comments

(My DB password and user filled-in password, do not match)这个问题的出现的原因是数据库中存储密码的字段长度不足以容纳通过password_hash函数生成的加密密码。在使用password_hash函数时,官方建议将生成的加密密码存储在一个可以超过60个字符长度的数据库字段中,而255个字符长度是一个较好的选择,以应对未来默认哈希算法发生变化的情况。因此,解决这个问题的方法就是将数据库中存储密码的字段长度设置为至少60个字符,最好是255个字符。

另外,由于在50个字符长度的字段中保存的旧密码在保存时被截断,导致额外的信息丢失,因此无法对这些旧密码进行验证。因此,还需要重新生成存储在该字段中的旧密码。

将字段长度设置为60个字符或更长,并重新生成存储在旧密码字段中的密码,可以解决(My DB password and user filled-in password, do not match)这个问题。

0