1.控制器操作:重写CController::actions()并且注册一个继承于CCaptchaAction类ID为‘captcha’的方法。
//验证码方法
public function actions()
{
return array(
// captcha action renders the CAPTCHA image displayed on the contact page
'captcha'=>array(
'class'=>'CCaptchaAction',
'backColor'=>0xFFFFFF, //背景颜色
'minLength'=>4, //最短为4位
'maxLength'=>4, //是长为4位
'transparent'=>true, //显示为透明
),
);
}
2.控制器操作:增加控制器操作权限。
//定义操作权限
public function accessRules()
{
return array(
array('allow', // 所有用户有操作权限:index,view,captcha
'actions'=>array('index','view','captcha'),
'users'=>array('*'),
),
array('allow', // 仅登录用户有权限操作:create,update
'actions'=>array('create','update'),
'users'=>array('@'),
),
array('allow', // 指定用户有权限操作:admin,delete
'actions'=>array('admin','delete'),
'users'=>array('admin'),
),
array('deny', // 禁止所有用户操作
'users'=>array('*'),
),
);
}
3.数据模型操作:声明一个变量用于存储用户输入的验证码
public $verifyCode;
4.数据模型操作:用’captcha‘验证,验证码变量。
public function rules()
{
return array(
array('type, status', 'numerical', 'integerOnly'=>true),
array('title,content,user','required'),
array('title', 'length', 'max'=>20, 'min'=>5),
array('content', 'length', 'max'=>50000),
array('user', 'length', 'max'=>20),
array('create_data', 'safe'),
array('verifyCode','captcha'),
);
}
5.视图表单_form:插入一个CCaptcha组件
<?php if(CCaptcha::checkRequirements()): ?>
<div class="row">
<?php echo $form->labelEx($model,'verifyCode'); ?>
<div>
<?php $this->widget('CCaptcha'); ?>
<?php echo $form->textField($model,'verifyCode'); ?>
</div>
<div class="hint">请输入上图看到的验证码。<br/>字母不区分大小写。</div>
<?php echo $form->error($model,'verifyCode'); ?>
</div>
<?php endif; ?>