Перейти к содержимому


Инсталлируем reCAPTCHA 2.0 от Google


  • Вы не можете ответить в тему
Сообщений в теме: 5

#1 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 02 September 2015 - 09:03 PM

Инсталлируем reCAPTCHA 2.0 от Google.

1. идем на https://www.google.com/recaptcha/admin, вводим свой домен (домены) и получаем "Ключ" и "Секретный ключ" для каждого домена.

2. в форму ввода данных, которую надо защитить капчей вставляем


{* BEGIN reCAPTCHA *}
<script src='https://www.google.com/recaptcha/api.js' async defer></script>
<div class="g-recaptcha" data-sitekey="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"></div>
{* END reCAPTCHA *}


где XXX...XXX это тот самый "ключ" (не секретный).
В случае, если эта форма не в шаблоне, а в чистом HTML надо заменить смарти-комменты {* *} на HTML-комменты <!-- -->

3. в PHP-обработчик формы вставляем что-то типа


# BEGIN reCAPTCHA
$skey = 'YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY';
$url = "https://www.google.com/recaptcha/api/siteverify?secret=$skey&response=".$_POST['g-recaptcha-response'];
#$result = file_get_contents($url); // простой вариант, когда allow_url_fopen включен
$ch = curl_init(); // то же самое, но через cURL
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = json_decode(curl_exec($ch),true);
curl_close($ch);
if(!$result['success']) {тут какая-то реакция на то, что $result['success']==false, т.е. капча неверна};
# END reCAPTCHA


где YYY...YYY это тот самый "секретный ключ".
В $result['success'] будет либо false, либо true в зависимости от правильности ввода капчи.

4. если в .htaccess прописано что-нибудь типа

Header set Content-Security-Policy "frame-src 'self';"

то добавляем туда гугль

Header set Content-Security-Policy "frame-src 'self' https://www.google.com;"

Более-менее понятное описание заголовка Content-Security-Policy можно найти здесь - http://zabolotskikh....ecurity-policy/ - или поиском в поисковике.
Описание настроек капчи находится здесь - https://developers.g...ha/docs/display - но как-то очень уж убого там... Два варианта цвета и размера.

PS. Знакомому с PHP/HTML/Smarty этого более чем достаточно. Не знакомому - увы, либо придется стать знакомым, либо банально оплатить внедрение.
  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#2 zcz

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 104 сообщений
Репутация: 62
Продвинутый

Отправлено 09 August 2017 - 09:05 AM

Спасибо! думал самому писать придется, а тут все сть.
Не против, если в отдельный модуль сформирую? Что бы из админки настраивать можно было и заменяло обычную капчу?
  • 0
Пишу, устанавливаю, натягиваю))) pix-art.ru

#3 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 09 August 2017 - 05:53 PM

Спасибо! думал самому писать придется, а тут все сть.

Не совсем все есть :).
Приведенный вариант не прокатит, если капчей на странице две.
Например, когда дискуссии и вопрос по товару сделаны табами на странице товара, а и там, и там есть капча.
Одна из капчей работать не будет. Толи первая, толи вторая.
Надо делать по другому:

<div class="g-recaptcha" id="g-recaptcha-1"></div>
<div class="g-recaptcha" id="g-recaptcha-2"></div>
<script type="text/javascript">{literal}var onloadCallback = function() {$('.g-recaptcha').each(function(){grecaptcha.render(this,{'sitekey':'{/literal}{$smarty.const.CONF_RECAPTCHA_PUBLIC_KEY}{/literal}'});})};</script>{/literal}
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit&hl=ru" async defer></script>

т.е. каждой капче присваиваем свой ID, а после всех грузим скрипт.
перед 'sitekey' можно добавить
'size':'compact',
тогда капча будет не широкая и низкая, а квадратная (выше, но уже).
Параметр render со значением explicit говорит, что капча будет инициализироваться не через HTML, а через JavaScript.
А параметр onload содержит название JavaScript-функции, которая исполнится в момент загрузки страницы

Не против, если в отдельный модуль сформирую? Что бы из админки настраивать можно было и заменяло обычную капчу?

В принципе, не против.
У меня такой модуль (с админкой) есть в коммерческом виде за 10$ - http://badisoft.ru/s.../recaptcha.html
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#4 Revived

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 59 сообщений
Репутация: 0
Начинающий

Отправлено 25 April 2018 - 10:11 AM

Она на вашем сайте не работает, постоянно выдаёт Неверно заполнена reCAPTCHA
  • 0

#5 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 25 April 2018 - 11:36 AM

Она на всех сайтах благодаря борьбе роскомнадзора с телеграмом не работает. По крайней мере, вчера не работала.
Врядли это надолго, но увы.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#6 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 25 April 2018 - 01:14 PM

Она на всех сайтах благодаря борьбе роскомнадзора с телеграмом не работает. По крайней мере, вчера не работала.
Врядли это надолго, но увы.

Сегодня тоже не работает. Переключился пока на штатную.
Украинцев (как и весь остальной мир) проблема не касается, у них гугловая рекапча работает. Это чисто российские тараканы.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)