Решение для старой версии модуля RSForm!Pro для Joomla!, в котором не было предусмотрено никаких ограничений по отправки пользователями данных. Боты этим активно пользуются.
Чтобы поставить ограничение на повторную отправку формы можно проверять выполнялась ли отправка данных с текущего IP пользователя ранее за определенный промежуток времени
Для этого в разделе редактирования формы во вкладке "PHP Scripts"
В первую область ввода текста (скрипт исполняемый при выводе формы), с заголовком "The $formLayout string contains the HTML code of the form..." следует прописать следующий код
Код php:
$modForm = '';
$ip = $_SERVER['REMOTE_ADDR'];
$db = JFactory::getDbo();
$db->setQuery("SELECT COUNT(`UserIp`) FROM `#__rsform_submissions` WHERE `FormId` = 'ИД_ФОРМЫ' AND `UserIp`='".$db->escape($ip)."' AND `DateSubmitted` > NOW()-INTERVAL 1 HOUR");
if ($db->loadResult() > 0){
$modForm .= '<p style="color:red;">Превышен интервал запросов (не более одного запроса в час)</p>';
}
if ($modForm) $formLayout = $modForm . $formLayout ;
Код php:
$ip = $_SERVER['REMOTE_ADDR'];
$db = JFactory::getDbo();
$db->setQuery("SELECT COUNT(`UserIp`) FROM `#__rsform_submissions` WHERE `FormId` = 'ИД_ФОРМЫ' AND `UserIp`='".$db->escape($ip)."' AND `DateSubmitted` > NOW()-INTERVAL 1 HOUR");
if ($db->loadResult() > 0){
$invalid[] = RSFormProHelper::getComponentId("ИД_ПОЛЯ_ФОРМЫ");
}
Где так же следует указать идентификатор формы и дополнительно ИД_ПОЛЯ_ФОРМЫ - какое либо существующее поле формы, чтобы форма отработала корректно ошибку подачи запроса и указало что какое либо из полей указано не верно. Можно подвизать под это поле какое либо соответствующее описание ошибки непосредственно в настройках поля.
Картинки Рисунок №1 by nradiowave, Ограничение по IP для повторной отправки формы RSFrom!Pro, #rsform #joomla