Безопасное удаление спамеров

Проблемы с установкой или работой phpBB 3.0.x? Получите помощь здесь!
С 1 января 2017 года phpBB Group прекращает поддержку phpBB версии 3.0.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.0 до 1 июля 2017 года.
Подробнее: Окончание поддержки phpBB 3.0.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Nick
phpBB 1.4.2
Сообщения: 64
Стаж: 16 лет 8 месяцев
Откуда: СПб
Благодарил (а): 7 раз
Поблагодарили: 21 раз

Безопасное удаление спамеров

Сообщение Nick »

Как сделать модераторов, которые смогут удалять "безопастно" спаммеров?

Суть какая, есть капча в виде вопроса, работает хорошо, но иногда всетаки просачиваются одиночные человеко-спамеры, где-то раз в день.

Хочется назначить модераторов, которые смогли бы их чистить. Самое простое - удаление пользователя и всех его сообщений. Для этого сделал администраторскую роль с разрешением удалять пользователей. Но как-то боязно - вдруг пароль стырят, или просто удалят не того пользователя... Как бы сделать роль с разрешением удалять пользователей у которых не больше, скажем, 10 сообщений?

Может есть более правильное решение?
Желательно удалять пользователя (чтобы он уходил из списка пользователей) и все его сообщения.
Booker
phpBB 2.0.7a
Сообщения: 627
Стаж: 15 лет 3 месяца
Благодарил (а): 165 раз
Поблагодарили: 21 раз

Re: Безопасное удаление спамеров

Сообщение Booker »

Человеко-спамеры каждый день? Что-то сильно сомнительно.
А против ботов давным-давно есть решение: Антибот 100500
Nick
phpBB 1.4.2
Сообщения: 64
Стаж: 16 лет 8 месяцев
Откуда: СПб
Благодарил (а): 7 раз
Поблагодарили: 21 раз

Re: Безопасное удаление спамеров

Сообщение Nick »

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

очень похоже на человекоботов - т.к. постят по 1 сообщению, и появляются не регулярно. И бывает очень профильный спам, где точно видно - человек.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: Безопасное удаление спамеров

Сообщение Татьяна5 »

Nick писал(а):постят по 1 сообщению
Премодерация на одно сообщение
А чтобы не забыть потом про них, создать группу "спамеры" без всяких прав, и назначить всех модераторов лидерами этой группы (чтобы могли в группу добавлять). Удалять тогда пользователей можно будет не каждый день
Nick
phpBB 1.4.2
Сообщения: 64
Стаж: 16 лет 8 месяцев
Откуда: СПб
Благодарил (а): 7 раз
Поблагодарили: 21 раз

Re: Безопасное удаление спамеров

Сообщение Nick »

Премодерация на одно сообщение
Для этого я слишком ленив :)

В общем пока оставил как писал выше... но если будут решения, буду признателен :)
Nick
phpBB 1.4.2
Сообщения: 64
Стаж: 16 лет 8 месяцев
Откуда: СПб
Благодарил (а): 7 раз
Поблагодарили: 21 раз

Re: Безопасное удаление спамеров

Сообщение Nick »

Может есть способ при удалении пользователя добавить проверку на количество его сообщений? И если их больше 10 - то запрещать? если надо будет других удалить, то можно будет уже и через mysql их потереть, или сообщения потереть и удалять :)

Где это лучше искать, хотя бы примерно? Надебсь там есть какая-то отдельная функция, а не что-то слишком общее для удаления записей из БД?
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Re: Безопасное удаление спамеров

Сообщение Shredder »

Nick
При удалении пользователя затрагивается целая масса таблиц.
См. includes/functions_user.php, функция user_delete
Nick
phpBB 1.4.2
Сообщения: 64
Стаж: 16 лет 8 месяцев
Откуда: СПб
Благодарил (а): 7 раз
Поблагодарили: 21 раз

Re: Безопасное удаление спамеров

Сообщение Nick »

Сделал так:
Ищем

Код: Выделить всё

	$sql = 'SELECT *
		FROM ' . USERS_TABLE . '
		WHERE user_id = ' . $user_id;
	$result = $db->sql_query($sql);
	$user_row = $db->sql_fetchrow($result);
	$db->sql_freeresult($result);

	if (!$user_row)
	{
		return false;
	}
Добавляем после:

Код: Выделить всё

	$sql = 'SELECT count(post_id) as count
		FROM ' . POSTS_TABLE . '
		WHERE poster_id = ' . $user_id;
	$result = $db->sql_query($sql);
	$row = $db->sql_fetchrow($result);
	$db->sql_freeresult($result);
	$num_posts = $row['count'];
	if ($num_posts>=5)
	{
		return true;
	}
Только теперь при неудачном удалении, всеравно пишет - пользователь удален (но он не удаляется). Можно это как-то изменить, чтоб ругалось мол нельзя такого хорошего пользователя удалять?
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Re: Безопасное удаление спамеров

Сообщение Shredder »

Перед return true; поставить соответствующий trigger_error('');
Например:

Код: Выделить всё

		trigger_error('LENGTH_BAN_INVALID', E_USER_WARNING);
И свою языковую переменную вместо LENGTH_BAN_INVALID

Вернуться в «Поддержка phpBB 3.0.х»