Yiiでログインしていないユーザに対してだけ、captchaを使う場合は、コントローラで
public function actions() { return array( // captcha action renders the CAPTCHA image displayed on the contact page 'captcha'=>array( 'class'=>'CCaptchaAction', 'backColor'=>0xFFFFFF, ), ); }
を追記する。モデルで、
public $verifyCode; public function rules() { return array( // verifyCode needs to be entered correctly array('verifyCode', 'captcha', 'allowEmpty'=>(!CCaptcha::checkRequirements() || !Yii::app()->user->isGuest), 'on'=>'create','message'=>'{attribute}が正しくありません。'), ); } public function attributeLabels() { return array( 'verifyCode'=>'画像認証', ); }
を追記する。そして、ビューで
<?php if(Yii::app()->user->isGuest && CCaptcha::checkRequirements()): ?> <div class="control-group "> <?php echo $form->labelEx($model,'verifyCode',array('class'=>'control-label required')); ?> <div class="controls"> <?php $this->widget('CCaptcha'); ?> <?php echo $form->textField($model,'verifyCode'); ?> <div class="help-block"> 上の画像に表示されている英数字を入力してください。大文字・小文字も区別してください。 </div> <?php echo $form->error($model,'verifyCode'); ?> </div> </div> <?php endif; ?>
を追記したらよいです。