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

为什么php会说两个相等的东西是不相等的?,php,Php,我试图查看登录的用户是否输入了正确的密码,该密码存储为md5哈希。当我回显输入密码的哈希值时,它与数据库中的哈希值完全匹配,但它仍然认为它是错误的。代码如下: echo md5($_POST['pass']); if ($user->match_password($_POST['pass']) == true) { ... } else { ... } 它尝试执行上面的else代码^ class user { ... var $passwor

我试图查看登录的用户是否输入了正确的密码,该密码存储为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));
    } 
}

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

第二,什么样的栏是密码?它应该是tinyblob或BINARY32,因为MD5哈希的结果如果存储在varchar中,可能会被破坏

链接:


您键入了变量,请参见上面的注释


他是你的朋友;o

我猜$u_reuslt变量只是一个输入错误…?@deceze:我怀疑你找到了这个错误。我希望海报知道复制/粘贴!是的,我想是的。如果你能把它作为一个答案,我会接受的。