【MySQL】パスワードのデータ型の文字数は多めにしておく

今回遭遇した問題

会員登録ページでパスワードを登録する際、MD5で暗号化した。

その後、ログイン画面からログインしようとするとパスワードが一致しないとエラーが出た。

入力したパスワードは、MD5で暗号化してからSELECT文でテーブルを探しにいくようにしてあるのだが、なぜか見つからない。

原因

テーブルのpasswordカラムのデータ型をvarchar(15)に設定していたため、暗号化した際に文字数オーバーで16文字以降がDBに登録されていなかった。

テーブルを作成した段階でMD5での暗号化のことをすっかり忘れていたうえ、暗号化するとこんなに文字数増えるとは思ってなかった。

今回はvarchar(50)に変更して解決した。

ちょっと嬉しいポイント

登録した暗号化済パスワードと、ログイン画面で入力した暗号化済パスワードが途中まで一緒であることに気づいた。

その瞬間、なにかの教材で文字数制限をオーバーしたらそれ以降の文字は消えてしまうといっていたことを思い出して解決した。

この頭に電球がピカーっと出てくる感じがたまらなく気持ちいい。

まぁもちろん問題なく進むのがいいんだろうけど、初心者のうちは壁にぶちあたってなんぼだと思いますので。

この記事が気に入ったらサポートをしてみませんか?