1С:битрикс, Защита Свободных Форм От Спама

Модуль Антиспам без CAPTCHA от CleanTalk для 1С:Битрикс позволяет помимо защиты описанных форм легко изготовить защиту любой формы.

Методы модуля были написаны специально с учетом возможного расширения функционала.

Здесь я приведу пример, как это сделать.

Предположим, вам нужно проверить на спам форму со следующими полями: адрес электронной почты, псевдоним, должность и сообщение.

Все, что вам нужно сделать, это разместить код вызова метода CleantalkAntispam::CheckAllBefore с необходимыми параметрами в /bitrix/php_interface/init.php .

/bitrix/php_interface/init.php

   

<Эphp /* You can place here your functions and event handlers AddEventHandler("module", "EventName", "FunctionName"); function FunctionName(params) { //code } */ AddEventHandler('form', 'onBeforeResultAdd', 'my_onBeforeResultAdd'); CModule::IncludeModule('cleantalk.antispam'); function my_onBeforeResultAdd($WEB_FORM_ID, $arFields, $arrVALUES) { $ct_status = COption::GetOptionString('cleantalk.antispam', 'status', '0'); if ($ct_status == 1) { global $APPLICATION; $aParams = array(); $aParams['type'] = 'comment'; $aParams['sender_email'] = isset($arrVALUES['email']) ? $arrVALUES['email'] : ''; $aParams['sender_nickname'] = isset($arrVALUES['nickname']) ? $arrVALUES['nickname'] : ''; $aParams['message_title'] = isset($arrVALUES['title']) ? $arrVALUES['title'] : ''; $aParams['message_body'] = isset($arrVALUES['message']) ? $arrVALUES['message'] : ''; $aResult = CleantalkAntispam::CheckAllBefore($aParams, FALSE); if (isset($aResult) && is_array($aResult)) { if ($aResult['errno'] == 0) { if ($aResult['allow'] == 1) { //Not spammer - just return; return; } else { if (preg_match('http://u', $aResult['ct_result_comment'])) { $err_str=preg_replace('/^[^\*]*?\*\*\*|\*\*\*[^\*]*?$/iu','',$aResult['ct_result_comment']); $err_str=preg_replace('/<[^<>]*>/iu', '', $err_str); } else { $err_str=preg_replace('/^[^\*]*?\*\*\*|\*\*\*[^\*]*?$/i','',$aResult['ct_result_comment']); $err_str=preg_replace('/<[^<>]*>/i', '', $err_str); } $APPLICATION->ThrowException($err_str); return false; } } } } } ?>

На самом деле код очень простой: сбор параметров из формы, вызов проверки, анализ результата.

Именно так сделаны все методы самого модуля для проверки форм.

Если необходимо добавить защиту для следующей формы, которая нужна клиентам, мы просто добавляем метод, аналогичный приведенному выше.

Убедиться в этом можно, посмотрев сам код модуля.

Параметр $WEB_FORM_ID не отмечен, его проверку можно добавить при необходимости.

Обратите внимание, что при проверке внутри функции CleantalkAntispam::CheckAllBefore() Используется тест JavaScript. Тестовый код автоматически устанавливается на страницы сайта при включении модуля (в том числе в настройках модуля) и вызове CleantalkAntispam::CheckAllBefore() Это также необходимо сделать, когда модуль включен, иначе тест JavaScript завершится неудачно.

Также обратите внимание, что флаг ответа здесь не анализируется.

$aResult['stop_queue'] .

Этот флаг указывает на явный спам и используется, например, при одобрении комментариев: если он установлен, комментарий отклоняется, если отклоняется, он отправляется на ручную модерацию.

Вы можете легко добавить такую проверку самостоятельно.

Дополнительная информация об API CleanTalk здесь .

Теги: #спам #Битрикс #антиспам #информационная безопасность #1С-Битрикс

Вместе с данным постом часто просматривают: