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