Защита от спама для сайта на Yii2 используя Javascript
О защите от спама для любого сайта используя Javascript я уже писал . В этой заметке речь пойдёт о том, как вышеупомянутое решение использовать в проекте на Yii2 без лишних заморочек. Принцип тот же, за исключением некоторых нюансов, относящихся к идеологии фреймворка фреймворка Yii2 .
Защита от спама в Yii2 на примере контактной формы:
1) Добавляем в форму (файл вида):
<?= $form->field($model, 'check')->hiddenInput([
'type' => 'hidden',
'id' => 'check',
'value' => '',
])->label(false) ?>
2) Приводим кнопку формы в такой вид:
<div class="form-group">
<?= Html::submitButton('ОТПРАВИТЬ', [
'id' => 'btn-contact',
'class' => 'btn btn-site',
'name' => 'contact-button',
'onclick'=>"document.getElementById('check').value = 'nospam';"
]) ?>
</div>
Полностью форма будет иметь следующий вид:
<?php $form = ActiveForm::begin(['id' => 'contact-form']); ?>
<?= $form->field($model, 'name')->textInput(['autofocus' => true]) ?>
<?= $form->field($model, 'email') ?>
<?= $form->field($model, 'subject') ?>
<?= $form->field($model, 'body')->textarea(['rows' => 6]) ?>
<?= $form->field($model, 'verifyCode')->widget(Captcha::class, [
'template' => '<div class="row"><div class="col-lg-6">{image}</div><div class="col-lg-6">{input}</div></div>',
]) ?>
<?= $form->field($model, 'check')->hiddenInput([
'type' => 'hidden',
'id' => 'check',
'value' => '',
])->label(false) ?>
<div class="form-group">
<?= Html::submitButton('ОТПРАВИТЬ', [
'id' => 'btn-contact',
'class' => 'btn btn-site',
'name' => 'contact-button',
'onclick'=>"document.getElementById('check').value = 'nospam';"
]) ?>
</div>
<?php ActiveForm::end(); ?>
В метод отправки формы (в соответствующем контроллере) добавляем ещё одно условие $_POST["ContactForm"]["check"] === 'nospam'
:
if ($form->load(Yii::$app->request->post()) && $form->validate() && $_POST["ContactForm"]["check"] === 'nospam'):
// Отправляем форму
return $this->refresh();
endif;
Предыдущая запись
Как сделать цифровую капчу в Yii2Следующая запись
Установка Yii2: первые шаги, настройка веб сервера