我创建了一个表单,以便用户可以更改他们的密码,为了增加安全性,我希望用户在将旧密码更改为新密码之前输入他们的旧密码。我遇到了一个简单的 if 语句的问题。
if ($row['password'] = $old_encrypt)
密码是 md5 加密的,所以我在进入这个 if 语句之前通过 md5 运行用户输入的密码。
我要检查的是用户输入的密码是否与存储在数据库中的密码相同。然而,上面的代码将接受任何等于存储在数据库中的值......因此有人可以告诉我问题可能是什么吗?
提前致谢
我创建了一个表单,以便用户可以更改他们的密码,为了增加安全性,我希望用户在将旧密码更改为新密码之前输入他们的旧密码。我遇到了一个简单的 if 语句的问题。
if ($row['password'] = $old_encrypt)
密码是 md5 加密的,所以我在进入这个 if 语句之前通过 md5 运行用户输入的密码。
我要检查的是用户输入的密码是否与存储在数据库中的密码相同。然而,上面的代码将接受任何等于存储在数据库中的值......因此有人可以告诉我问题可能是什么吗?
提前致谢
您使用了赋值运算符=。您必须使用比较运算符==,甚至更好的是严格比较运算符===
if ($row['password'] === $old_encrypt)
您正在使用赋值运算符=而不是比较运算符==或===.
在 an 中使用赋值运算符if通常会评估为 true,除非正在分配“falsey”值。如果你在右边有一个常量或文字值,赋值运算符也可能导致错误:
if(true = $variable)
// will cause an error
然而,
if($variable = true)
// will always be true
$varibale 是,true还是false现在都没72.3关系'sunshine'true