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() で渡す) こともできます。
デフォルトで、
wordLen、timeout および
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_Image は
Zend_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 の方法 |
