こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ハッシュ値のパスワードMYSQL検索で一致しない

PHPでMYSQLにハッシュ値にしたパスワードを登録して、同じハッシュ値で検索を行いましたが、どうしても検索結果で一致しません。

パスワードの文字列をMD5を使ってハッシュ値に変換して次のようにMYSQLに登録しました。

$email = htmlspecialchars($_POST["email"]);
$user_name = htmlspecialchars($_POST["user_name"]);
$password = md5(htmlspecialchars($_POST["password"]));

$sql = 'INSERT INTO user_tbl (email,user_name,password) VALUES ( "' . $email . '","' . $user_name . '","' . $password . '" )';
$sth = $dd->prepare($sql);
$sth->execute( array() );
$qid = $dd->lastInsertId();

※user_tblの定義のこんな感じにしてあります。
CREATE TABLE user_tbl ( email varchar(50) NOT NULL,
user_name varchar(20) NOT NULL,
password VARCHAR(50) NOT NULL );


検索する処理でSQL等は次のように処理しましたが、検索結果がゼロ件でした。

$email = htmlspecialchars($_POST["email"]);
$beforepass = md5(htmlspecialchars($_POST["beforepass"]));
$afterpass = md5(htmlspecialchars($_POST["afterpass"]));

$sql = 'SELECT count(password) FROM user_tbl WHERE email = "' . $email . '" and password = "' . $beforepass . '"';

$q = $dd->prepare( $sql );
$q->execute();

if($q->fetchColumn() == 1){
//ここでパスワードが一致した場合の処理を書く
}

そこで次の2パターンのようにSQL文を少し変えてみたらそれぞれの検索結果が1件でした。


$sql = 'SELECT count(password) FROM user_tbl WHERE email = "' . $email . '" and password = "' . $beforepass . '"';
                    ↓
$sql = 'SELECT count(password) FROM user_tbl WHERE email = "' . $email . '"';


$sql = 'SELECT count(password) FROM user_tbl WHERE email = "' . $email . '" and password = "' . $beforepass . '"';
                    ↓
$sql = 'SELECT count(password) FROM user_tbl WHERE email = "' . $email . '" and user_name = "tanaka"';
(MYSQLのuser_tblのuser_nameには'tanaka'と入っている状態で実行したものです)


SQLに渡される各変数には文字列が代入済みであることが確認できています。
MD5でハッシュ化した文字列同士を比較してどうして検索結果が一致しないのでしょうか?
ちなみに検索したいパスワードのハッシュ値とDBに格納されているパスワードのハッシュ値を目で比較したら一致していました。

以上です。

ハッシュ値を検索条件に入れる場合に特殊な事をするのでしょうか?

ヒントだけでもよいので教えて下さい。
宜しくお願いします。


os: windows 7
eclipse: Version: 4.2.0
Build SDK: Android 4.1(API 16)
PHP 5

投稿日時 - 2013-05-03 00:30:09

QNo.8070349

困ってます

質問者が選んだベストアンサー

相互リンク
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12106628457

投稿日時 - 2013-05-03 19:42:12

お礼

より多くの方のお知恵を借りたくて他でも質問しました。
知恵袋でもお世話になりました。

投稿日時 - 2013-05-03 23:10:44

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-