1

我创建了一个表单,以便用户可以更改他们的密码,为了增加安全性,我希望用户在将旧密码更改为新密码之前输入他们的旧密码。我遇到了一个简单的 if 语句的问题。

if ($row['password'] = $old_encrypt)

密码是 md5 加密的,所以我在进入这个 if 语句之前通过 md5 运行用户输入的密码。

我要检查的是用户输入的密码是否与存储在数据库中的密码相同。然而,上面的代码将接受任何等于存储在数据库中的值......因此有人可以告诉我问题可能是什么吗?

提前致谢

4

2 回答 2

5

您使用了赋值运算符=。您必须使用比较运算符==,甚至更好的是严格比较运算符===

if ($row['password'] === $old_encrypt)
于 2013-05-10T15:34:25.573 回答
2

您正在使用赋值运算符=而不是比较运算符=====.

在 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

于 2013-05-10T15:34:37.417 回答