Jump to content

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


support

Recommended Posts

Если Вы столкнулись с прблемой спама, который приходит у Вас со страницы обратной связи, можно попробовать добавить невидимую каптчу (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}

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

Link to post
Share on other sites
×
×
  • Create New...