-2

したがって、ユーザーが登録してログインするときにmd5を使用してパスワードをエンコードおよびデコードしていますが、データベースのパスワードは、同じ単語であることはわかっていても、ログイン時に使用したパスワードと一致しません。

これは私のデータベースにあるものです

098f6bcd4621d373cade4e832

そして、これはログイン画面で使用されるパスワードに md5 を使用すると得られるものです

098f6bcd4621d373cade4e832627b4f6

ご覧のとおり、7 人の追加キャラクターがいますが、なぜ同じでないのかわかりません。登録時にユーザーの詳細をデータベースに挿入するために使用されるスクリプトは次のとおりです。

$qry =  "INSERT INTO Members(fname, lname, fullname, email, login, passwd, bad_league_id) 
         VALUES('$fname','$lname',0,'$email', '$login','".md5($_POST['password'])."',0)";
$result = @mysql_query($qry);

そして、これが私のログインフォームが値を比較する方法です

$qry="SELECT * FROM Members WHERE login='$login' AND passwd='".md5($_POST['password'])."'";
$result=mysql_query($qry);

別の注意として、私は現在、mysql から mysqli に移行する過程にあるので、非推奨であることを知っているので、mysql の使用を許してください。

4

1 に答える 1

4

デフォルトでは、MD5()関数によって生成されるハッシュの長さは 32 文字です。passwd現在、列のデータ型はVARCHAR (25)です。つまり、実際の値より 7 文字少ない最大 25 文字しか格納されません。

passwdこれを修正するには、正しい長さを格納できるように列のデータ型を変更する必要がありますVARCHAR (32)

于 2013-03-30T14:41:55.497 に答える