为什么php会说两个平等的东西是不平等的?

时间:2009-07-22 05:03:44

标签: php

我正在尝试查看登录的用户是否输入了正确的密码,该密码存储为md5哈希。当我回显输入的密码的哈希值时,它与数据库中的密码完全匹配,但它仍然认为它是假的。下面是代码:

echo md5($_POST['pass']);

if ($user->match_password($_POST['pass']) == true) {

    ...

} else {

    ...

}

它尝试执行^

上面的else代码
class user {

    ...

    var $password;

    ...

    function user($id) {
        global $DB;
        $this->db = new db($DB['host'], $DB['user'], $DB['pass'], $DB['database']);

        $this->user_id = $id;
        $u_result = $this->db->run("select * from users where use_id = " . $this->db->escape($this->user_id));

        ...

        $this->password = $u_reuslt[0]['password'];

            ...
    }

        ...

    function match_password($password) {
        return ($this->password == md5($password));
    } 
}

2 个答案:

答案 0 :(得分:5)

您输入了变量,请参阅上面的评论。

E_ALL是你的朋友。 ; o)

答案 1 :(得分:1)

检查数据库中的密码字段 - 如果MD5密码插入正确,可能会因为长度不够而被剪切。

其次,什么类型的列是password?它应该是tinyblobBINARY(32),因为如果存储在varchar中,MD5哈希的结果可能会被破坏。

链接:

http://www.experts-exchange.com/Web/Web_Languages/PHP/Q_21578660.html

http://forums.mysql.com/read.php?30,16535,16617#msg-16617