我需要检查控制器中的CAPTCHA,所以我应该从会话表中获取CAPTCHA会话值。我检查会话表,我看到这样的事情:
Yii.CCaptchaAction.3bbe352e.controllername.captcha|s:7:"xemobin"
这是什么“3bbe352e”?
这个值是否恒定?
我可以像这样检查控制器中的CAPTCHA会话吗?
if ($session['Yii.CCaptchaAction.3bbe352e.controllername.captcha']==$_POST['captcha'])
答案 0 :(得分:6)
将captcha小部件添加到表单
<?php $this->widget('CCaptcha'); ?><br>
<?php echo CHtml::textField('captcha'); ?>
将验证码添加到控制器操作
public function actions() {
return array(
// captcha action renders the CAPTCHA image displayed on the contact page
'captcha'=>array(
'class'=>'CCaptchaAction',
'backColor'=>0xFFFFFF,
));
}
然后在你的控制器动作中
$captcha=Yii::app()->getController()->createAction("captcha");
$code = $captcha->verifyCode;
if($code === $_REQUEST['captcha']){...}
答案 1 :(得分:2)
public function rules()
{
return array(
array('verifyCode', 'captcha', 'on'=>'captchaRequired'),
);
}
以下行添加控制器
$model = new LoginForm;
// if a user already tried to login, then set a scenario:
$model->scenario = 'captchaRequired';