support 447 Posted February 25, 2019 Report Share Posted February 25, 2019 Если Вы столкнулись с прблемой спама, который приходит у Вас со страницы обратной связи, можно попробовать добавить невидимую каптчу (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
Recommended Posts