2009-07-22 13 views
-1

ログインしているユーザーがmd5ハッシュとして保存されている正しいパスワードを入力したかどうかを確認しようとしています。入力したパスワードのハッシュをエコーすると、データベースのハッシュと正確に一致しますが、それでもその偽と考えられます。 HERESにコード:PHPはなぜ2つの等しいものが不等であると言うでしょうか?

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

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

    ... 

} else { 

    ... 

} 

それはDBにパスワードフィールドをチェックし

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)); 
    } 
} 
+4

私は '$ u_reuslt'変数がちょうどタイプミスであると推測しています...? – deceze

+0

@deceze:あなたはバグを見つけたと思う。私はポスターがコピー/ペーストを知っていることを願っています! – derobert

+1

はい私は彼らがそう信じました。あなたが答えとしてそれを投稿できるなら、私はそれを受け入れるでしょう。 –

答えて

5

あなたは上記のコメントを参照、あなたの変数をtypoed。

E_ALLはあなたの友人です。 ; o)

1

^上の他のコードを実行しようとする - MD5パスワードが正しく挿入した場合、それがないので、それが切断されてもよいです十分な長さを持つ。

第2に、どのような種類の列がpasswordですか?またはBINARY(32)である必要があります。なぜなら、MD5ハッシュの結果は、varcharに格納されていればマングルできるからです。

リンク:

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

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

関連する問題