Использую reCaptcha v3
himiklab
Повадились ко мне спамеры . У меня регистрация с подтверждением мыла , но первый шаг проходят и это крайне неприятно .
Если открывать с браузера - все работает . Но гады юзают какой то скрипт который непосредственно сабмитит данные на контроллер .
Почему то при таком подходе , верификация reCaptcha не происходит
Что делать - без понятия
модель :
Код: Выделить всё
...
public $cur_step;
/**
* @var array
*/
private $_step_names = [
1 => 'step-one',
2 => 'step-two',
3 => 'step-tree',
4 => 'step-four',
];
/**
* @inheritdoc
*/
public function rules()
{
return [
['name', NameExistValidator::className(), 'skipOnEmpty' => false],
[['name', 'greeting'], 'filter', 'filter' => function ($value) {
return stripTags($value, false);
}],
['name', 'string', 'min' => 3, 'max' => 30],
['greeting', 'string', 'min' => 2, 'max' => 200],
[['email', 'greeting'], 'filter', 'filter' => 'trim'],
['email', 'email'],
['is_eighteen', 'checkEighteen'],
['email', 'string', 'max' => 100],
['email', EmailExistValidator::className(), 'skipOnEmpty' => false],
['email', 'checkBanEmail', 'skipOnEmpty' => false],
[[
'gender_id',
'country_id',
'region_id',
'city_id',
'role_id',
], 'integer'],
[[
'country_id',
'region_id',
'password',
'gender_id',
'birth_date',
'email',
'name',
'is_eighteen',
//'reCaptcha'
], 'required'],
...
[['reCaptcha'], ReCaptchaValidator3::class,
'secret' => '1111111111111111111111111111'
],
['password', 'string', 'min' => 5, 'max' => 50],
...
];
}
....
/** @inheritdoc */
public function scenarios()
{
$scenarios = parent::scenarios();
return ArrayHelper::merge($scenarios, [
'step-one' => ['name', 'email', 'password', 'is_eighteen'],
...
]);
}
Код: Выделить всё
...
$model_form = new RegistrationForm(['scenario' => 'step-one', 'cur_step' => 1]);
$this->performAjaxValidation($model_form);
if ($model_form->load(\Yii::$app->request->post()) && $model_form->validate()) {
$status = $model_form->registerFirstStep();
if ($status === false) {
\Yii::error('Проблема на первом шаге регистрации пользователя');
setFlash(FLASH_STATUS_ERROR, \Yii::t('system', 'Возникла системная ошибка. Попробуйте позже'));
} else {
return $this->controller->redirect([$status]);
}
}
...
Почему рекапча не срабатывает при POST вызове с данными неосредственно контроллера ?