Спамеры атакуют - как за раз убить или перенести все посты с одного IP? Тема решена

Проблемы с установкой или работой 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) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
servina
phpBB 1.2.0
Сообщения: 16
Стаж: 18 лет 9 месяцев

Re: Спамеры атакуют - как за раз убить или перенести все посты с одного IP?

Сообщение servina »

А можно ли сделать не удаление постов, а перенос в тему с заданным topic_id?
Я хочу сохранить все эти мерзские посты, чтобы злыдень когда-нибудь за это ответил.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Спамеры атакуют - как за раз убить или перенести все посты с одного IP?

Сообщение Sheer »

В php все можно. Курите функцию function move_posts($post_ids, $topic_id, $auto_sync = true) - includes/functions_admin.php

Отправлено спустя 1 минуту 44 секунды:
Не проще ли заблокировать айпишник? Прям на уровне .htaccess
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
servina
phpBB 1.2.0
Сообщения: 16
Стаж: 18 лет 9 месяцев

Re: Спамеры атакуют - как за раз убить или перенести все посты с одного IP?

Сообщение servina »

Я правильно поняла, что в Вашем скрипте

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

    foreach($rowset as $data)
    {
        delete_post($data['forum_id'], $data['topic_id'], $data['post_id'], $data);
        print "Post " . $data['post_id'] . " deleted<br />";
    }
нужно поменять на

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

    foreach($rowset as $data)
    {
        move_posts($data['post_id'], 4321); // 4321 - topic_id накопительной темы
        //delete_post($data['forum_id'], $data['topic_id'], $data['post_id'], $data);
        print "Post " . $data['post_id'] . " deleted<br />";
    }
и будет мне счастье?
P.S. IP-шник заблокировать не проще. Он может меняться. Вообще на будущее мне будет полезно переносить спамные сообщения в накопительную тему. Я смогу сортировать не только по IP, но и ещё как-нибудь в первом селекте. Замучалась уже ручками чистить. А в этот раз вообще экстремально заспамили.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Спамеры атакуют - как за раз убить или перенести все посты с одного IP?

Сообщение Sheer »

servina писал(а): и будет мне счастье?
Нет. $post_ids - это не переменная, а массив.
При переносе все проще. Нужно просто заполнить массив $post_ids

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

while($row = $db->sql_fetchrow($result))
{
    $post_ids[] = $row['post_id'];
}
и один раз передать его в move_posts
Ну и sql-запрос такой городить не нужно. Такого достаточно

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

$sql = 'SELECT post_id
    FROM ' . POSTS_TABLE . '
    WHERE poster_ip LIKE \'' . $ip . '\'';
Не забыть

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

include($phpbb_root_path . 'includes/functions_admin.php.' . $phpEx);
NB. Не проверял.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
servina
phpBB 1.2.0
Сообщения: 16
Стаж: 18 лет 9 месяцев

Re: Спамеры атакуют - как за раз убить или перенести все посты с одного IP?

Сообщение servina »

А по-моему $post_ids может быть как переменной так и массивом!
Функция сама смотрит и если надо, делает массив:

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

function move_posts($post_ids, $topic_id, $auto_sync = true)
{
	global $db;

	if (!is_array($post_ids))
	{
		$post_ids = array($post_ids);
	}
Отправлено спустя 5 минут 27 секунд:
Я склоняюсь просто заменить delete_post на move_posts (если это заработает!)
Потому что Ваш скрипт очень ценный и я смогу его по разному использовать в зависимости от настроения :)
Иногда удалять, иногда переносить в накопительную тему. Достаточно закомментировать одну функцию и раскомментировать другую.
Если конечно я права по вопросу, что $post_ids может быть как массивом так и переменной.

Отправлено спустя 59 минут 31 секунду:
Вставила move_posts и все посты злыдня перенесла!
Слава Sheer'у - великому человечищу! :)
Огромное спасибо!

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