【问题标题】:MD5 hash validation failing for unknown reason in PHPMD5 哈希验证在 PHP 中因未知原因失败
【发布时间】:2011-02-20 23:21:44
【问题描述】:

我正在编写一个登录表单,它将给定的密码转换为带有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 是别的东西?

【问题讨论】:

    标签: php sql mysql validation md5


    【解决方案1】:

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

    而不是

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

    试试

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

    【讨论】:

      【解决方案2】:

      在我看来,您正在将字符串($_POST 的结果)与数组(mysql_fetch_row 的结果)进行比较。你可能想要这样的东西:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多