Yiiでのcaptchaの使い方

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; ?>

を追記したらよいです。

投稿日:
カテゴリー: php タグ: