如何检查控制器中的CAPTCHA?

时间:2011-12-21 17:51:36

标签: php yii

我需要检查控制器中的CAPTCHA,所以我应该从会话表中获取CAPTCHA会话值。我检查会话表,我看到这样的事情:

Yii.CCaptchaAction.3bbe352e.controllername.captcha|s:7:"xemobin"

这是什么“3bbe352e”?

这个值是否恒定?

我可以像这样检查控制器中的CAPTCHA会话吗?

if ($session['Yii.CCaptchaAction.3bbe352e.controllername.captcha']==$_POST['captcha'])

2 个答案:

答案 0 :(得分:6)

FORM

将captcha小部件添加到表单

<?php $this->widget('CCaptcha'); ?><br>
<?php echo CHtml::textField('captcha'); ?>

CONTROLLER

将验证码添加到控制器操作

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