Антиспам. Как соединить Simple Anti-Spam с Honeypot?

Главные вкладки

Аватар пользователя andem andem 19 октября 2017 в 18:07

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

Модуль Honeypot хорошо подходит для защиты от роботов.

Но мне еще нужно, чтобы не было ссылок в тексте, как в заявках так и в комментариях.

Модуль Block anonymous links я так понял защищает от ссылок в комментах. Но остаются заявки... (в заявках есть поле с текстом) В этом модуле нет возможности указать защиту от ссылок в нужных формах.

Рассмотрел модуль Simple Anti-Spam .
Все хорошо, может заменить два предыдущих модуля и есть возможность указать нужные формы. Но есть один минус. Покрайней мере для меня он значительный. Я не хочу видеть поле "Я не спамер", причем если пользователь его не отметил выскакивает сообщение что его заявка СПАМ. А это нельзя делать.

Прошу, уважаемые, форумчане помочь с данной проблемой.

Как мне убрать поле "Я не спамер" модуля Simple Anti-Spam в форме? Возможно добавить вместо этой защиты модуль Honeypot, как добавочный.

Есть ли альтернативные скрытые возможности избавится от спам роботов и ссылок в заявках и комментариях?

Лучший ответ

Аватар пользователя andem andem 19 октября 2017 в 21:03

Решил данный вопрос с помощью создания модуля.
Итак, для решения моего вопроса я использовал модуль Honeypot для блокировки роботов. Плюс создал модуль на основе Block anonymous links. Этот модуль легкий и не составило труда разобраться в нем. В модуле готово решение для комментариев, добавил только взаимодействие с нужной формой с помощью хука и функции по аналогии.

<?php
function myblocklinks_form_webform_client_form_16_alter(&$form, &$form_state$form_id) {
  
$form['#validate'][] = 'blockanonymouslinks_body_validate';
}
function 
blockanonymouslinks_body_validate($form, &$form_state) {
  global 
$user;
  
//check if anonymous user
  
if (!$user->uid && isset($form_state['input']['submitted']['sut_problemy'])) {
    
$inputebody $form_state['input']['submitted']['sut_problemy'];
    
//the checks are derived from the filter module > _filter_url method
    
if (preg_match("@(http://|https://|ftp://|mailto:|smb://|afp://|file://|gopher://|news://|ssl://
|sslv2://|sslv3://|tls://|tcp://|udp://)+@se"
$inputebody) || preg_match("@(www\.[a-zA-Z0-9\
@:%_+*~#?&=.,/;-]*[a-zA-Z0-9\@:%_+~#\&=/;-])+@se"
$inputebody)) {
      
form_set_error("inputebody"t("Ссылки в тексте запрещены. Обратитесь к администратору сайта."));
    }
  }
}
?>

Комментарии

Аватар пользователя ivnish ivnish 19 октября 2017 в 18:36

Почему у вас некие "заявки" могут создавать анонимы?

Чтобы не было ссылок в тексте проще всего сделать поля текста формата "plain text"

Аватар пользователя andem andem 19 октября 2017 в 19:29

Имеется ввиду заявка на покупку услуги. Решаю вопрос на коммерческом сайте.
plain text - не особо подходит, т.к. люди-спамеры всеравно будут отправлять. А нужно чтобы вообще не отправляли или отправка не проходила. Но спасибо за предложенный способ.
Сейчас Модератор запаривается удалять заявки или комментарии со спамом. Нужно чтобы ему на администрирование приходили только нужные.

Аватар пользователя andem andem 19 октября 2017 в 20:52

Спасибо но капча не подходит. Хочется облегчить возможность пользователям оставлять заявки и комментарии.

Аватар пользователя ivnish ivnish 19 октября 2017 в 22:12

Всегда есть обратная сторона монеты. Нельзя бороться со спамом не усложняя пользователям жизнь. Либо капча, либо модератор будет сидеть и разгребать спам

Аватар пользователя andem andem 19 октября 2017 в 21:03

Решил данный вопрос с помощью создания модуля.
Итак, для решения моего вопроса я использовал модуль Honeypot для блокировки роботов. Плюс создал модуль на основе Block anonymous links. Этот модуль легкий и не составило труда разобраться в нем. В модуле готово решение для комментариев, добавил только взаимодействие с нужной формой с помощью хука и функции по аналогии.

<?php
function myblocklinks_form_webform_client_form_16_alter(&$form, &$form_state$form_id) {
  
$form['#validate'][] = 'blockanonymouslinks_body_validate';
}
function 
blockanonymouslinks_body_validate($form, &$form_state) {
  global 
$user;
  
//check if anonymous user
  
if (!$user->uid && isset($form_state['input']['submitted']['sut_problemy'])) {
    
$inputebody $form_state['input']['submitted']['sut_problemy'];
    
//the checks are derived from the filter module > _filter_url method
    
if (preg_match("@(http://|https://|ftp://|mailto:|smb://|afp://|file://|gopher://|news://|ssl://
|sslv2://|sslv3://|tls://|tcp://|udp://)+@se"
$inputebody) || preg_match("@(www\.[a-zA-Z0-9\
@:%_+*~#?&=.,/;-]*[a-zA-Z0-9\@:%_+~#\&=/;-])+@se"
$inputebody)) {
      
form_set_error("inputebody"t("Ссылки в тексте запрещены. Обратитесь к администратору сайта."));
    }
  }
}
?>
Аватар пользователя ivnish ivnish 19 октября 2017 в 21:36

Как-то быстро вы указали "решение". Я думаю, "решением" его можно будет назвать как минимум через месяц, когда он поработает на сайте