Задача такая. Не хочется закрывать для некоторых разделов возможность постить без регистрации, но при этом нужно отсеять большинство ботов.
Реализация видится такая. Боты любят в свои посты втыкать ссылки, а потому будем считать любой пост гостя со ссылками - постом бота.
Обработка данных ведется в файле post.php
В файле fm.class.php - объявлены основные функции...
1. NordWest - 1 июня 2013 — 16:00 - перейти к сообщению
2. NordWest - 1 июня 2013 — 17:22 - перейти к сообщению
Попробую пока так...
В post.php ищем код
и заменяем на
Блокирует запись в базу, если в сообщении гостя присутствует фраза http
Данные о блокировке записываются в лог форума.
В post.php ищем код
code:
#Check double clicking :)
if ($topic[$last_key]['post'] == $fm->input['inpost']) {
$fm->_FcloseAll();
$fm->_Message($fm->LANG['ReplyCreate'],$fm->LANG['ReplySavedAlredy']);
}
if ($topic[$last_key]['post'] == $fm->input['inpost']) {
$fm->_FcloseAll();
$fm->_Message($fm->LANG['ReplyCreate'],$fm->LANG['ReplySavedAlredy']);
}
и заменяем на
code:
#Check double clicking :)
if ($topic[$last_key]['post'] == $fm->input['inpost']) {
$fm->_FcloseAll();
$fm->_Message($fm->LANG['ReplyCreate'],$fm->LANG['ReplySavedAlredy']);
}
if ($fm->user['id'] == 0)
{
if (strpos($fm->input['inpost'],'http'))
{
$fm->_FcloseAll();
$fm->_WriteLog('Блокирован пост спамбота в теме '.$topicname);
$fm->_Message($fm->LANG['ReplyCreate'],$fm->LANG['ReplyAddedOk'], 'topic.php?forum='.$forum_id.'&topic='.$topic_id.'&postid='.$last_key.'#'.$last_key);
}
}
if ($topic[$last_key]['post'] == $fm->input['inpost']) {
$fm->_FcloseAll();
$fm->_Message($fm->LANG['ReplyCreate'],$fm->LANG['ReplySavedAlredy']);
}
if ($fm->user['id'] == 0)
{
if (strpos($fm->input['inpost'],'http'))
{
$fm->_FcloseAll();
$fm->_WriteLog('Блокирован пост спамбота в теме '.$topicname);
$fm->_Message($fm->LANG['ReplyCreate'],$fm->LANG['ReplyAddedOk'], 'topic.php?forum='.$forum_id.'&topic='.$topic_id.'&postid='.$last_key.'#'.$last_key);
}
}
Блокирует запись в базу, если в сообщении гостя присутствует фраза http
Данные о блокировке записываются в лог форума.
3. NordWest - 1 июня 2013 — 17:25 - перейти к сообщению
Если будет нормально работать попробую добавить управление в админку и сделать возможным не блокировать пост, а переносить в мусорку.
4. NordWest - 1 июня 2013 — 17:40 - перейти к сообщению
Поставил на этот форум - вроде работает.
Понаблюдаю за статистикой...
Понаблюдаю за статистикой...
5. NordWest - 14 сентября 2013 — 07:16 - перейти к сообщению
Сегодня чистил форум от необычного бота. Использует ссылки вида [url=][/url].
Будет время - заблокирую и эту возможность.
Будет время - заблокирую и эту возможность.
6. NordWest - 22 сентября 2013 — 16:10 - перейти к сообщению
Заменил
кодом
т.к. боты снова начали прорываться.
code:
if (strpos($fm->input["inpost"],"http"))
кодом
code:
if (strpos($fm->input['inpost'],'http') || strpos($fm->input['inpost'],'[url') === true)
т.к. боты снова начали прорываться.
7. NordWest - 25 сентября 2013 — 23:58 - перейти к сообщению
Попробовал чуть другую тактику. Создал топик-свалку для ботов и вместо блокировки буду их туда перенаправлять. 
(Добавление)
Ага, попробовал... Чуть форум не обрушил. Боты стали создавать несуществующие темы...
Еле откатил всё назад.
(Добавление)
Ага, попробовал... Чуть форум не обрушил. Боты стали создавать несуществующие темы...
Еле откатил всё назад.