CAPTCHA (Completely Automated Public Turing tests to tell Computers and Humans Apart : コンピュータと人間を 区別するための、完全に自動化された公開チューリングテスト) を実装したものです。
このパッケージは、CAPTCHA (Completely Automated Public Turing tests to tell Computers and Humans Apart : コンピュータと人間を 区別するための、完全に自動化された公開チューリングテスト) を作成する機能を提供します。以下のような機能が含まれます。
GD2 を使用した、グラフィカルな CAPTCHA の作成
ファクトリパターンを使用した、プラグイン機構
このパッケージは CAPTCHAs を作成します。 HTTP はステートレスなプロトコルなので、Web ページの安全性を 確保するために、このパッケージを使用してきちんと実装する 必要があります。 詳細な情報は 使用例を参照ください。
現時点では、グラフィカル CAPTCHA ドライバは Image_Text に依存しており、 これを使用するには PHP のコンパイル時に TTF サポートを組み込んでおく 必要があります。
以下の例では CAPTCHA の一般的な使用法を説明します。 CAPTCHA が正しく解決された場合にのみ、フォームから送信された内容を 処理します。
例 64-1CAPTCHA を作成する 以下のコードは CAPTCHA を作成し、必要な情報を提供し、 その CAPTCHA を PNG 画像として取得します。
|
例 64-2CAPTCHA を使用してフォームのセキュリティを確保する 以下の例では、CAPTCHA が正しく解決されたかどうかを確認する機能を 実装しています。リクエスト間で情報を保持し続けるため、ここでは CAPTCHA の文字列をセッション変数に格納しています。いったん CAPTCHA が解決された後は、セッション ID の再利用を避けるために このセッション変数を消去しておくことが大切です。
ひととおり完全に動作するサンプルは、配布パッケージ内の CAPTCHA_test.php を参照ください (GD および TTF のサポートが必要です)。 |
Text_CAPTCHA は CAPTCHA に関する情報を提供し、 基底クラスで定義されているいくつかの関数によって、その内部機能への アクセスが可能となります。それらの関数の実装内容は、ドライバに依存します。
init() は、CAPTCHA を初期化したうえで 必要な情報を指定します。この情報は Image_Text のパラメータと似た形式です。
_createCAPTCHA() は CAPTCHA を作成します。 これは init() の内部でコールされます。
getPhrase() は CAPTCHA の文字列を返します。
_createPhrase() は CAPTCHA の文字列を作成します。 これは内部で使用されます。
getCAPTCHA() は CAPTCHA を返します。 使用されるフォーマットは、ドライバの実装に依存します。