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; ?>
を追記したらよいです。