CAPTCHA機能を用いたWebフォーム入力を実装する3つのユーティリティPrograming Bible(2/5 ページ)

» 2008年04月16日 15時10分 公開
[Ben MartinOpen Tech Press]
SourceForge.JP Magazine

capictcha

capictcha capictcha

 ここで検証する3つの選択肢のうちで最初に取り上げるcapictchaは、指定した文字列のCAPTCHAイメージ作成を行うツールである。このツールはCAPTCHAイメージを作成して返す機能に特化しており、PHPクラスを介したアクセスや調整にまで対処した統合フレームワークを意図した作りにはなっていない。こうした仕様のツールが適しているのは、ユーザーセッション追跡用のカスタム機能が既に装備済みのPHP Webサイトで、既存の挙動を変更させることなくCAPTCHA機能を追加させたい場合だろう。

 capictchaの現行版(バージョン0.3)を使用するにはApacheとPHPとgdが必要となる。PHP側からgdにアクセスできなかった場合、ブラウザによるcapictcha.phpの読み込み結果として何も表示されないはずである。

 capictchaのtarボールを展開する先は、各自のApacheにおけるDocumentRootディレクトリとしておく(通常は/var/www/html)。そこに含まれるcapictcha-0.3.phpという名称のPHPファイルを、POSTまたはGETにて必要なCGIパラメータを指定した上で呼び出すと、該当するCAPTCHAイメージが生成されるはずである。

 capictchaに渡すメインのパラメータは、イメージ化するテキスト文字列を指定するtext、イメージの高さを指定するheight、出力させるイメージフォーマット(PNGまたはJPEG)を指定するoutputの3つである。

 CAPTCHAを介したテキストフィールド入力をユーザーに強制させたい場合に問題となるのは、Webクライアントへの呼び出し情報をユーザーの目から秘匿させ、capictcha呼び出し時に渡すtextパラメータを機械的に直接Webフォームに入力するといった処理をどう防止するかである。そのために用意されているのがspecialという第4のCGIパラメータで、これを用いると具体的なCAPTCHA用文字列をWebクライアント側に公開することなく、事前定義しておいたテキスト文字列を指定することが可能となる。この機構は、CAPTCHA上に表示させるテキストと対になる選択肢文字列とをマッピングしたルックアップテーブルをcapictchaのPHPファイル中に格納しておくことで機能する。選択肢となる文字列はクライアントの目にさらされるかもしれないが、その対応するテキスト文字列、つまりはCAPTCHAイメージとする文字列は秘匿されるのである。実際にspecialを使用するにはcapictchaのPHPファイルを編集する必要があり、それには「// set up specials」とされた行を特定してCAPTCHA用テキストのリストを登録しておけばいい。

 例えば後記に抜粋したデフォルトのリストをそのまま利用する場合、special=helloというCGIパラメータの指定でcapictchaを呼び出すとHi there!というCAPTCHAテキストが返される。

...

// set up specials

$special_hash = array(

        'punk' => "'" . '"/,.!@#$%^&*()_-=\|+ ',

        'hello' => 'Hi there!',

        'person' => 'SSGTAC',

        'random' => '12345789abdefghijmnqrtuyABCDEFGHIJKLMNOPQRSTUVWXYZ',

);


Copyright © 2010 OSDN Corporation, All Rights Reserved.

注目のテーマ