Данная проверка мне понадобилась для установки капчи на повторную отправку формы пользователем. Т.е. если кто-либо с одного IP адреса пытается более одного раза отправить одну и ту же форму, для него выводим капчу.
Как работает:
1) при успешном заполнение формы добавляем строку в лог событий следующим образом
\CEventLog::Log('INFO', 'НАЗВАНИЕ_НАШЕГО_СОБЫТИЯ', 'МОДУЛЬ', $_REQUEST['phone'], serialize($arEventFields));
Подробно тут останавливаться не буду, описание функции можно найти - тут
2) Затем пишем функцию (можно например в init.php или каком-нибудь своем модуле):
public static function needCaptcha() { GLOBAL $USER; $result = false; $maxTime = 60*30; /* Проверка по последнему заказу с этого IP */ $rsEvent = \CEventLog::GetList( ['ID' => 'DESC'], [ 'SEVERITY' => 'INFO', 'AUDIT_TYPE_ID' => 'НАЗВАНИЕ_НАШЕГО_СОБЫТИЯ', 'MODULE_ID' => 'МОДУЛЬ', 'REMOTE_ADDR' => $_SERVER["REMOTE_ADDR"], ], ['nTopCount' => 1] )->Fetch(); if(!empty($rsEvent['TIMESTAMP_X'])) { $time = time()-strtotime($rsEvent['TIMESTAMP_X']); if($time < $maxTime) $result = true; } return $result; }
И далее просто обращаемся к ней, когда нужно узнать повторная ли это отправка данных пользователем.
Хостинг - FastVPS