無料スクリプトならphp.to

PHPスクリプト無料配布所 :: PHP.TO







アクセスアップ・上位表示ならSEO.CUG.NET
安くて早い!SEOに強いコーディング代行サイト AcodeZ(アコーズ)
無料スクリプトならphp.to PHPスクリプト無料配布!php.to
リンクはご自由に


0008. captchaの作成方法(マルチバイト版)
<< 0007. captchaの作成方法
前章のcaptchaの作成方法captchaの作成方法の情報へ でGDを用いたcaptchaのサンプルを作成しました。

しかし、最近のBOTNETWikipediaによるBOTNET情報を参照 (ロボットの略。自動で情報を収集するプログラムなどです)はOCR機能を用いて、画像の文字列でさえ認識して突破してくることもあります。

そこで、日本語のcaptchaを作成してみました。
日本語の文字列を画像で出力するためには、imagettftext()imagettftext()のマニュアルへ 関数と日本語のTrueTypeフォントが必要です。
imagettftext()関数を使うためには、あらかじめFreeTypeのインストールが必要ですので、もし入っていない場合はインストールしてください。
(必ずFreeType→PHPの順番で入れないといけません。もし先にPHPをインストールした場合は、make cleanしてからconfigureしてください)

また、フォントに関しても、ライセンス的に問題がないものを使う必要があります。
今回はM+ と IPAフォントの合成フォントM+ と IPAフォントの合成フォントの情報へ のアーカイブに含まれている、IPAフォントを使用することにしました。

さて、実行してみたら分かりますが、問題なく日本語(ひらがな)でcaptchaが動いています。

ひらがな版のcaptcha
こんなかんじです。

ソースを見てみれば分かりますが、前章のcapthcaとほとんどソースは変わっていませんので、簡単だと思います。

また、この方式のソースですと漢字も問題なく使えます。サンプルとして、小学校1年生で習う漢字のcapthcaも作ってみましたので、よかったら使ってみてください。内容は、ひらがなの部分を漢字にしただけですので、誰でも簡単に改変可能です。

漢字版のcaptcha
こちらはこんなかんじです。


これで、少なくとも日本語が読めて日本語が入力できる環境以外からのアクセスは排除することができると思います。
⇒ Captchaのサンプル(ひらがな版)
⇒ Captchaソースのダウンロード(ひらがな版)
⇒ Captchaのサンプル(小学校1年生で習う漢字版)

>> 0009. 携帯電話端末用GPS機能を利用した緯度経度情報の利用方法(その1)
track back URL : http://php.to/tips/8/trackback/

コメント

posted by 柳川 (2006/12/25 14:43:25)
参考になりました
posted by れ (2008/08/06 02:16:12)
captcha_sample2.zipのcaptcha.phpの2行目は
if (!function_exists("imagettftext")) {
じゃないとsyntax errorっぽい
posted by php.to (2008/08/15 19:33:49)
ああ、すみません。typoでした。
面倒かけますが修正をお願いします。
posted by ぼうず (2009/12/03 11:36:16)
画像が上手く表示できませんでした。
imagettftextを試しに日本語以外にすると表示でき、エンコード部分を直したらいけるかと思ったら、ちゃんとUTF-8になっておりました。

すいません。ご教授願いますでしょうか?
日本語部分は文字化けすらしなく、表示されません。
posted by ぼうず (2009/12/03 11:45:51)
画像が上手く表示できませんでした。
imagettftextを試しに日本語以外にすると表示でき、エンコード部分を直したらいけるかと思ったら、ちゃんとUTF-8になっておりました。

すいません。ご教授願いますでしょうか?
日本語部分は文字化けすらしなく、表示されません。
posted by ぼうず (2009/12/03 14:06:05)
mb_internal_encodingが設定されていなかっただけでした。
お騒がせしました。


よろしければコメントをどうぞ ※spam防止のため、半角英数字のみの投稿はできません
お名前(必須):
URL:
コメント(必須):

パソコンメーカーのデル
XPS 15z
Vostro 3750

- SEO.CUG.NET :: スクリプト配布チーム -