Рубрики
vam shop Заметки Обучение

Добавляем невидимую каптчу от гугл (google recaptcha v3) на страницу обратной связи!

Если Вы столкнулись с прблемой спама, который приходит у Вас со страницы обратной связи, можно попробовать добавить невидимую каптчу (google recaptcha v3) от гугл.

1. На сайте https://google.com/recaptcha получаете ключи для сайта.

site key и secret key.

2. В файле /shop-content.php меняйте:

	if (isset ($_GET['action']) && ($_GET['action'] == 'send') && $spam_flag == false) {

на:

// Build POST request:     
$recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify'; $recaptcha_secret = 'ЗДЕСЬ-УКАЖИТЕ-ВАШ-СЕКРЕТНЫЙ-КЛЮЧ'; $recaptcha_response = $_POST['recaptcha_response'];
// Make and decode POST request:
$recaptcha = file_get_contents($recaptcha_url . '?secret=' . $recaptcha_secret . '&response=' . $recaptcha_response);
$recaptcha = json_decode($recaptcha);

if (isset ($_GET['action']) && ($_GET['action'] == 'send') && $spam_flag == false && $recaptcha->score >= 0.5) {

В шаблоне страницы обратной связи /templates/ваш-шаблон/module/contact_us.html после:

{config_load file="$language/lang_$language.conf" section="contact_us"}

добавьте:

<script src="https://www.google.com/recaptcha/api.js?render=УКАЖИТЕ-ЗДЕСЬ-СВОЙ-SITE-KEY"></script>     
<script>
grecaptcha.ready(function () { grecaptcha.execute('УКАЖИТЕ-ЗДЕСЬ-СВОЙ-SITE-KEY', { action: 'contact' }).then(function (token) { var recaptchaResponse = document.getElementById('recaptchaResponse'); recaptchaResponse.value = token; }); }); </script>

и внизу, меняйте:

{$FORM_END}

на:

<input type="hidden" name="recaptcha_response" id="recaptchaResponse">
{$FORM_END}

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