Lab / Laravel

Интеграция невидимой капчи от Google для Laravel

Невидимая капча (Invisible reCAPTCHA ) — это усовершенствованная версия капчи от гугл, в которой больше нет видимого пользователю блока в который нужно что-либо вводить или даже просто кликать. Новая капча от гугл полностью не видима за исключением небольшного значка на вашем сайте.

Сегодня мы воспользуемся замечательным пакетом для интеграции невидимой капчи в процесс валидации Laravel. Это может быть полезно например при отправке коментариев пользователями на вашем сайте или в контактной форме, что бы изящно и ненавязчива защитить вас от спама.

Итак давайте приступим, для начала вам необходимо установить пакет:

composer require albertcht/invisible-recaptcha

Затем необходимо подключить сервис провайдер в файле: /config/app.php в низу массива ServiceProviders:

AlbertCht\InvisibleReCaptcha\InvisibleReCaptchaServiceProvider::class,

Для начала вам необходимо зарегистрировать своё приложение тут google.com/recaptcha/admin и получить API ключ. Выбирая тип вашей капчи, не забудьте выбрать вариант invisible reCAPTCHA, чтобы она работала в фоновом режиме. После регистрации вашего сайта в гугл, пропишите полученные ключи в глобальных настройках, т.е в файле .env это тот самый где вы пишете подключение к базе данных:

INVISIBLE_RECAPTCHA_SITEKEY={siteKey}
INVISIBLE_RECAPTCHA_SECRETKEY={secretKey}
INVISIBLE_RECAPTCHA_BADGEHIDE=false
INVISIBLE_RECAPTCHA_DEBUG=false

Если вы установите значение INVISIBLE_RECAPTCHA_BADGEHIDE равным true, вы можете скрыть логотип значка в вашей форме.

Так-же вы можете вывести дебаг информацию в консоль браузера установив значение INVISIBLE_RECAPTCHA_DEBUG равным true

Теперь для вывода вашей капчи в любой части вашего Blade шаблона просто используйте вот такой вызов:

{!! app('captcha')->render(); !!}

Так же вы можете задать кастомный язык для вывода ошибок:

{!! app('captcha')->render($lang = null); !!}

Осталось только добавить правило в валидацию формы:

$validate = Validator::make(Input::all(), [
//...
 'g-recaptcha-response' => 'required|captcha'
]);

Вот собственно и всё, формы на вашем сайте будут защищёнными и ненавязчивыми для простых пользователей.