PHP中的MD5哈希验证因未知原因而失败

时间:2011-02-20 23:21:45

标签: php sql mysql validation md5

我正在编写一个登录表单,它将给定的密码转换为带有md5($password)的MD5哈希,然后将其与我数据库中已经散列的记录进行匹配。在这种情况下,我确信数据库记录是正确的。但是,它不会登录并声称密码不正确。

这是我的代码:

$password = mysql_real_escape_string($_POST["password"]);
...more code...
$passwordQuery = mysql_fetch_row(mysql_query(("SELECT password FROM users WHERE email = '$userEmail'")));
...some code...
elseif(md5($password) != $passwordQuery)
{
    $_SESSION["noPass"] = "That password is incorrect.";
}
...more code after...

我尝试只拉动md5($ password)的值,当我在视觉上比较它时,它匹配起来。但是,我无法在PHP中进行比较。也许是因为MySQL记录存储为文本,而MD5是其他东西?

2 个答案:

答案 0 :(得分:4)

$ passwordQuery包含带散列的数组,而不仅仅是散列。

而不是

elseif(md5($password) != $passwordQuery)

elseif(md5($password) != $passwordQuery[0])

答案 1 :(得分:2)

在我看来,你比较一个字符串($ _POST的结果)和一个数组(mysql_fetch_row的结果)。你可能想要这样的东西:

if (md5($password) != $passwordQuery['password') {
   ....
}