我将用户密码作为纯文本存储在数据库中。因此,更改密码很容易。我使用这段代码,
while($row = mysql_fetch_array($result)) {
if($row['Password']==$opass)
mysql_query(
"UPDATE information SET Password='$pass' WHERE Username='$name'"
);
}
首先,我检查用户是否正确输入了旧密码($opass
),然后我允许他将其更改为新密码($pass
)。我想我可以检查旧密码,因为我将其存储为纯文本。但是,如果我使用任何哈希算法,这个if($row['Password']==$opass)
代码怎么能运行?我认为$opass
和$row['Password']
不会相同。
答案 0 :(得分:4)
使用等效的散列函数对用户输入的密码进行散列,并将其与您在数据库中存储的密码进行比较。
while($row = mysql_fetch_array($result)){
if($row['Password']==yourOneWayPasswordHashingFunction($opass))
mysql_query("UPDATE information SET Password='$pass' WHERE Username='$name'");}
正如我在评论中提到的,使用bcrypt
。密码可能很难,所以使用它,然后去购物,及时为圣诞节:)
也...
我将用户密码作为纯文本存储在数据库中。 因此可以轻松更改密码。
强调我的。
您永远不应该存储纯文本密码,并且它很容易更改不是正确的理由。然而,荣幸认识到需要对此采取行动。