Как проверить CAPTCHA в контроллере? - PullRequest
2 голосов
/ 21 декабря 2011

Мне нужно проверить CAPTCHA в контроллере, чтобы получить значение сеанса CAPTCHA из таблицы сеансов.Я проверяю таблицу сеансов и вижу что-то вроде этого:

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

Что это за "3bbe352e"?

Является ли это значение постоянным?

Могу ли я проверить сеанс CAPTCHA вконтроллер, как это?

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

Ответы [ 2 ]

6 голосов
/ 23 февраля 2012

FORM

добавить виджет капчи в форму

<?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']){...}
2 голосов
/ 17 декабря 2013
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';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...