Yii2 Используем google reCAPTCHA

Для защиты от спамеров на сайтах часто используют капчу. В стандартный набор Yii входит компонент капча, однако многие пользователи ленятся вводить символы или капчу можно легко распознать роботом. Не знаю насколько защищена капча от гугла, но пользоваться ей однозначно удобней чем стандартной. 

Сперва регистрируем свой сайт в гугле и поулчаем ключи. 

Есть хорошее готовое расширение для yii /yii2-recaptcha-widget

Устанавливаем его с помошью composer.

В основной конфиг добавляем: 

'components' => [
    'reCaptcha' => [
        'name' => 'reCaptcha',
        'class' => 'himiklab\yii2\recaptcha\ReCaptcha',
        'siteKey' => 'your siteKey',
        'secret' => 'your secret key',
    ],
    ...

Покажу как использовать на примере стандартной модели Yii ContactForm

Там уже есть поле  $verifyCode

В методе  rules() заменяем 

[['verifyCode'], 'captcha']

на 

[['verifyCode'], \himiklab\yii2\recaptcha\ReCaptchaValidator::className(), 'secret' => 'Ваш секретный ключ']

в файле вывода формы контактов ''contact.php' заменяем вывод атрибута $verifyCode на 

 <?= $form->field($model, 'verifyCode')->widget(
                \himiklab\yii2\recaptcha\ReCaptcha::className(),
                ['siteKey' => 'ключ сайта ']
            ) ?>

Все готово для использования !!!.

Обсуждение

Andrew Plisyuk

А если на странице две и боле форм. и все с капчами. как использовать ? Отображается только первая, даже если разные ИД выставить. Остальные не работают. Как использовать плагин при отображении одновременно двух и более форм ?

Artyom Narmagambetov

Для меня тоже актуален ваш вопрос, нашли решение?