Производство фотообоев в Новосибирске. Интернет магазин фотообоев. Изготовление - один день! Каталог 10 000 изображений!
8 Февраль 2011

Чистка от спама SMF форума

Вынес отдельно с поста Размышления о СПАМе свой опыт по чистке форума.

Итак — с определенного момента я позабыл о форуме, полезной активности так же не наблюдалось, чего не сказать о спамерах! Наплодили более 60к сообщений в более чем 10к тем !

Чистка в ручную — нереально, поэтому решил я сразу в базе посты поубивать — найду последний СДЛ и бай бай! всем кто не спрятался — я не виноват 🙂

Первое, что я сделал — это определил первого зарегистрировавшегося спамера — это был 17й id.
Далее чистка спамеров.
DELETE FROM prefix_members where id_member>16
Чистка топиков созданных спамерами.
DELETE FROM preix_topics WHERE id_member_started>16
Чистка сообщений оставленных спамерами.
DELETE FROM prefix_messages WHERE id_member > 16
Ещё табличку подчищаем
DELETE FROM prefix_themes WHERE id_member > 16
Циферки естественно свои подставляем!

Прикол! — пока запросы выполнялись — ещё 20 спам-сообщений запостили, это потому что я в обратном порядке выполнял — тут то по уму выложил и плюс потому, что защитой я занимался после чистки, а не до — как полагается. Соответственно — делаем по уму — сначала защита, потом запросы в том порядке, в котором я и выложил.

Теперь о проблемах, обнаруженных после чистки —
1. вся информация о количестве тем и сообщений — старая т.е. в итоге 60к сообщений в 10к темах, хотя на самом деле и сотни не наберётся.
Лечится так: «Админка» — «Обслуживание форума» — «Пересчитать все форумы и статистику»

2. при просмотре категорий пропали все заспамленные ранее ветки
По идее лечится так:
«Админка» — «Обслуживание форума» — «Найти и исправить любые ошибки»
но к сожалению мне не помогло, пришлось вручную (т.к. у меня совсем немного тем, по-идее нужно сваять небольшой скриптик, фиксирующий проблему)

решение проблемы на примере одного топика:
UPDATE smf.topics SET id_last_msg = ’15’ WHERE topics.id_topic =5 LIMIT 1 ;
то есть определяем айдишник последней «живой» записи и ставим его в поле id_last_msg
(в моем случае там были айдишники удаленных спам-сообщений — из за чего и «косячило»)

рубрики: CMS | 7 комментариев