ひらがな対応の画像認証を作ってみました
会員登録やパスワードリマインダーなどでよく見かける画像認証ですが、ひらがなに対応したものを作ってみました。
設定
ImageAuthentication.php
/* * 画像認証に使う文字列 * おすきなものを有効にして下さい */ $font_Text = 'あいうえおかきくけこさしすせとたちつてとなにぬねのはひふへほまみむめもやゆよわん'; //$font_Text = 'あいうえおかきくけこさしすせとたちつてとなにぬねのはひふへほまみむめもやゆよわんABCDEFGHIJKLMNOPQRSTUVWXYZGabcdefghijklmnopqrstuvwxyz'; //$font_Text = 'あいうえおかきくけこさしすせとたちつてとなにぬねのはひふへほまみむめもやゆよわんばびぶべぼがぎぐげごだぢづでど'; //$font_Text = 'ABCDEFGHIJKLMNOPQRSTUVWXYZGabcdefghijklmnopqrstuvwxyz0123456789'; /* * 何文字表示するか */ $font_Len = 8; /* * 画像の縦横サイズ *文字数に応じて調整 */ $img_Width = 290; $img_Height = 75; /* * ラインを何本引くか * 最大50本程度。あまり多いと読めなくなります。 */ $line_Len = 25; /* * 点を何個描写するか * 1万~3万程度。あまり多いと読めなくなります。 */ $ten_Len = 10000;
文字自体もサイズを変えたり斜めにしたりなどしていますが、、GDでラインと点を描写し、より読み取りにくくしています。
文字の記憶領域に関して
生成された文字列はsessionに記録しています。
if( $_POST["ImageNinsho"] == $_SESSION["ImageAuthentication"]){ }
$_SESSION["ImageAuthentication"]として記録されますので、check.phpのサンプルを参考にして下さい。その他、jQueryでその場で確認する為のコードも同封されています。
フォントに関して
Typing Art様からお借りしました。この場を借りて厚く御礼申し上げます。ライセンスはIPAフォントに準じるとの事ですので、同封させて頂いております。ImageAuthentication.phpはMITライセンスですが、フォントに関してはこれに含まれませんのでご注意下さい。
その他、こちらのフォントも良さそうなのですが、再配布は禁止との事で参考までにどうぞ。