我正在编写一个登录表单,它将给定的密码转换为带有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是其他东西?
答案 0 :(得分:4)
$ passwordQuery包含带散列的数组,而不仅仅是散列。
而不是
elseif(md5($password) != $passwordQuery)
试
elseif(md5($password) != $passwordQuery[0])
答案 1 :(得分:2)
在我看来,你比较一个字符串($ _POST的结果)和一个数组(mysql_fetch_row的结果)。你可能想要这样的东西:
if (md5($password) != $passwordQuery['password') {
....
}