Yii2. Установка Google reCAPTCHA v3 на сайт. Защита сайта от спама.

Сегодня мы поговорим как защитить свой сайт от надоедливого спама, при помощи установки на страницы сайта механизма captcha, а конкретно об новом механизме Google reCAPTCHA v3. Как известно, это самая популярная система типа CAPTCHA, которая создана для блокировки spam ботов, то есть автоматизированных действий на разных сервисах.

Для блокировки спама на сайте мы будем использовать библиотеку для Yii2 под названием  himiklab/yii2-recaptcha-widget, которая позволит нам работать как Google reCAPTCHA v3, так и с более старой второй версией Google reCAPTCHA. По сути это библиотека - обертка надо  Google reCAPTCHA которая упрощает встраивание механизма CAPTCHA в ваш сайт или сервис написанный на Yii2.

Как установить библиотеку himiklab/yii2-recaptcha-widget?

Что бы установить библиотеку himiklab/yii2-recaptcha-widget будем использовать менеджер пакетов PHP composer. Для этого введем в консоли команду :

composer require "himiklab/yii2-recaptcha-widget" "*"

или добавляем строку в раздел require файла composer.json:

"himiklab/yii2-recaptcha-widget" : "*"

после чего расширение будет доступно в вашем коде написанным на yii2.

Как настроить библиотеку himiklab/yii2-recaptcha-widget?

После того как вы установили библиотеку, вам надо зарегистрироваться на сайте Google reCAPTCHA и получить ключи API для вашего домена (сайта). При регистрации сайта вам будут выделены два уникальных ключа (секретный и публичный), они потребуются вам далее для конфигурации yii2-recaptcha-widget.

Далее добавляем в файл конфигурации нашего приложения (обычно это web.php) компонент:


'components' => [
    'reCaptcha' => [
        'class' => 'himiklab\yii2\recaptcha\ReCaptchaConfig',
        'siteKeyV3' => 'your site key v3',
        'secretV3' => 'your secret key v3',
    ],

Далее добавляем код валидации в нашу модель. Обычно это модель какой либо формы на вашем сайте. Например это может быть форма добавления комментариев или форма обратной связи, которые надо защитить от спама:

class MyForm extends Form {
	...	
	public $reCaptcha;
public function rules()
{
  return [
	  // ...
	  [['reCaptcha'], \himiklab\yii2\recaptcha\ReCaptchaValidator3::className()],
  ];
}

Последний шаг это подключение reCAPTCHA к форме на Yii2:

<?= $form->field($model, 'reCaptcha')->widget(\himiklab\yii2\recaptcha\ReCaptcha3::className())  ?>

На это этапе подключение reCAPTCHA на ваш сайт завершено и должно работать.

Еще по тематике Yii2

Yii2. Отправляем данные из ActiveForm через AJAX

Последние новости