Спам-боты становятся все более изощренными, заполнение форм и отключение JavaScript приводят к недостоверным данным и перегрузке сервера. Решение проблемы – использование эффективного антиспама для платформы MODx.
Создание сниппета validate – ключевой шаг в борьбе со спамом. Он осуществляет проверку данных, предотвращая отправку формы при обнаружении подозрительной активности. Сниппет проверяет поле org, добавленное с помощью JavaScript, и блокирует форму при его заполнении либо отсутствии.
Создание сниппета validate
Создание сниппета – простой и эффективный способ обеспечить безопасность форм. Создаем сниппет validate с данным кодом:
<?php
function text_error(){
return false;
die();
}
if(isset($_POST['org'])){
if($hook->getValue('org')!=''){
$modx->log(xPDO::LOG_LEVEL_ERROR, 'Ошибка заполнения формы: не пустое поле антиспама');
$modx->log(xPDO::LOG_LEVEL_ERROR, print_r($_POST, 1));
text_error();
}else{
return true;
}
}else{
$modx->log(xPDO::LOG_LEVEL_ERROR, 'Ошибка заполнения формы: нет поля антиспама');
$modx->log(xPDO::LOG_LEVEL_ERROR, print_r($_POST, 1));
text_error();
}
Интеграция с формой
Использование сниппета вместе с формой AjaxForm требует настройки хука validate. В вызов формы AjaxForm добавляем хук validate:
// Вызов формы с хуком validate
&hooks=`validate, email, FormItSaveForm`
Дополнительная защита
Для усиления защиты, добавим скрипт с использованием jQuery. Этот скрипт предотвратит отправку формы при заполненном поле “org” и при его отсутствии:
// Антиспам
$(function(){
$('.ajax_form').append('<input type="text" name="org" value="" class="_org" style="visibility:hidden; height: 0; width: 0; padding: 0; border:none;"/>')
})
// Антиспам
Антиспам для MODx под AjaxForm - необходимый компонент для обеспечения безопасности и эффективной работы форм вашего сайта. Сниппет validate и JavaScript-скрипт создают надежный барьер против спам-ботов.