Programmer's Reference Guide

Captcha の方法

Captcha アダプタ

次のアダプタが、Zend Framework に同梱されています。

Zend_Captcha_Word

Zend_Captcha_Word は抽象アダプタで、 Dumb、Figlet および Image アダプタの基底アダプタとなります。 指定できる機能は、単語の長さやセッションの有効期限、 使用するセッション名前空間オブジェクト、 Zend_Session_Namespace を使いたくない場合に使用するセッション名前空間クラスです。 さらに、すべての検証ロジックをカプセル化します。

デフォルトでは、単語の長さは 8 文字です。またセッションのタイムアウトは 5 分、情報の永続化には Zend_Session_Namespace を使用します (使用する名前空間は "Zend_Form_Captcha_<captcha ID>" です)。

Zend_Captcha_Adapter インターフェイスの標準メソッドのほかに、 Zend_Captcha_Word は次のメソッドを公開しています。

  • setWordLen($length)getWordLen() で、生成される "単語" の文字数を設定したり現在の値を取得したりします。

  • setTimeout($ttl)getTimeout() で、セッショントークンの有効期限を設定したり現在の値を取得したりします。 $ttl は秒数で指定します。

  • setSessionClass($class)getSessionClass() で、captcha トークンの永続化に使用する Zend_Session_Namespace の実装を設定したり 現在の値を取得したりします。

  • getId() で、現在のトークン識別子を取得します。

  • getWord() で、captcha に使用するために生成した単語を取得します。 まだ生成されていない場合は、まず生成してからそれを返します。

  • setSession(Zend_Session_Namespace $session) で、captcha トークンの永続化に使用するセッションオブジェクトを設定します。 getSession() で、現在のセッションオブジェクトを取得します。

すべての Word captcha は、コンストラクタにオプションの配列を渡すことができます。 別の方法として、その配列を setOptions() で渡す (あるいは Zend_Config オブジェクトを setConfig() で渡す) こともできます。 デフォルトで、 wordLentimeout および sessionClass のキーをすべて使用します。 各具象実装では、それ以外のキーを使用したり 違う方法でオプションを使用したりしているかもしれません。

注意: Word は抽象クラスであり、直接そのインスタンスを作成することはできません。

Zend_Captcha_Dumb

Dumb アダプタは、その名が示すとおりのものです。 ランダムな文字列を用意し、それを逆からタイプさせることで検証を行います。 これは CAPTCHA の手法としてはあまりよいものではないので、 テスト用に使うのみにしておきましょう。 あるいは、ほかに手がない場合の最後の手段としてのみ使うようにしましょう。 このアダプタは Zend_Captcha_Word を継承しています。

Zend_Captcha_Figlet

Figlet アダプタは、Zend_Text_Figlet を使用して Figlet をユーザに表示します。 Figlet による captcha は文字しか使用できません。

コンストラクタに渡されたオプションは、アダプタが使用する Zend_Text_Figlet オブジェクトにも渡されます。 使用できる設定オプションについては、そちらのドキュメントも参照ください。

Zend_Captcha_Image

Image アダプタは、生成された単語を受け取ってそれを画像としてレンダリングし、 それをいろいろな方法で歪めて自動判読を困難にします。 これを使用するには、 » GD 拡張モジュール を TrueType あるいは Freetype のサポートつきでコンパイルする必要があります。 現在、Image アダプタが生成できるのは PNG 画像のみです。

Zend_Captcha_ImageZend_Captcha_Word を継承しており、 さらに次のメソッドを公開しています。

  • setExpiration($expiration)getExpiration() で、 captcha 画像をファイルシステム上に残す期間を設定します。 通常、これはセッションの有効期間より長くします。 captcha オブジェクトが起動されるたびにガベージコレクションが働き、 期限切れとなった画像が削除されます。 値は秒数で指定します。

  • setGcFreq($gcFreq)getGcFreg() で、ガベージコレクションが働く頻度を設定します。ガベージコレクションは、 1/$gcFreq (デフォルトは 100) 回のコールごとに実行されます。

  • setFont($font)getFont() で、使用するフォントを指定します。$font には、 使用するフォントのパスをフルパス形式で指定する必要があります。 この値を設定しなければ、captcha の生成時に例外がスローされます。 フォントは必須です。

  • setFontSize($fsize)getFontSize() で、captcha を生成する際に使用するフォントのサイズをピクセル単位で設定します。 デフォルトは 24px です。

  • setHeight($height)getHeight() で、生成される captcha 画像の高さをピクセル単位で指定します。 デフォルトは 50px です。

  • setWidth($width)getWidth() で、生成される captcha 画像の幅をピクセル単位で指定します。 デフォルトは 200px です。

  • setImgDir($imgDir)getImgDir() で、captcha 画像を保存するディレクトリを指定します。 デフォルトは "./images/captcha/" で、これは起動スクリプトからの相対パスとなります。

  • setImgUrl($imgUrl)getImgUrl() で、HTML マークアップ時に使用する captcha 画像への相対パスを指定します。 デフォルトは "/images/captcha/" です。

  • setSuffix($suffix)getSuffix() で、使用するファイル名の拡張子を指定します。デフォルトは ".png" です。注意: これを変更したからといって、 生成される画像の形式が変わるわけではありません。

上のすべてのオプションは、コンストラクタのオプションとして指定できます。 その際には、メソッド名の先頭の 'set' を取り除いて先頭を小文字にした名前 ("suffix", "height", "imgUrl" など) を使用します。

Zend_Captcha_ReCaptcha

ReCaptcha アダプタは、Zend_Service_ReCaptcha を使用して captcha の生成と検証を行います。 次のメソッドを公開しています。

  • setPrivKey($key)getPrivKey() で、ReCaptcha サービスで使用する秘密鍵を指定します。 これはオブジェクトの作成時に指定する必要がありますが、 その後いつでも上書きすることができます。

  • setPubKey($key)getPubKey() で、ReCaptcha サービスで使用する公開鍵を指定します。 これはオブジェクトの作成時に指定する必要がありますが、 その後いつでも上書きすることができます。

  • setService(Zend_Service_ReCaptcha $service)getService() で、 ReCaptcha サービスオブジェクトを取得したり取得したりします。


Captcha の方法
blog comments powered by Disqus

Select a Version

Languages Available

Components

Search the Manual