Yii の組み込みキャプチャは、基本的にほとんどのニーズを満たすことができます。検証コードに特別な要件がある場合、これは主に CCaptchaAction を拡張することで実現できます。この例では、カスタム検証コード関数がランダムに生成されます。 10 以内の加算と減算を生成するには、ユーザーは検証に合格するために正しい結果を計算する必要があります。
この例は、上記の Yii フレームワーク開発チュートリアル (20) UI コンポーネントのキャプチャの例に基づいており、次の変更が加えられていますまず、protected/components ディレクトリに MathCaptchaAction を作成し、generateVerifyCode、
renderImage およびその他のメソッドをオーバーロードします:
class MathCaptchaAction extends CCaptchaAction{ protected function generateVerifyCode(){return mt_rand((int)$this->minLength,(int)$this->maxLength);} public function renderImage($code){parent::renderImage($this->getText($code));} protected function getText($code){$code=(int)$code;$rand=mt_rand(1,$code-1);$op=mt_rand(0,1);if($op){ return $code-$rand. '+' . $rand; }else{return $code+$rand. '-' . $rand;}}}
次に、SiteController を変更します。 ルールは、新しく作成した MathCaptchaAction を使用します
public function actions() { return array( 'captcha'=>array( 'class' => 'MathCaptchaAction', 'minLength' => 1, 'maxLength' => 10, )