Появился у меня один скучающий деятель: ходит по проксям, каждые 5-10 минут регистрирует вручную новый ник и пишет всякую фигню со скоростью 2 сообщения в минуту.
Забодало каждый раз лезть в админку удалять ник, чистить топики, банить очередной проксевый айпишник в эйчтиакцессе.
Сделал "мухобойку" в профиль. Удаляет от пользователя всё, в том числе и записи в mJournal'е.
lang_profile.php
'to_bioreactor' => "Удалить профиль и забанить по IP",
skin_profile.php
После
function show_profile($info) {
global $ibforums, $INFO;
'cp_no_user' => "Запрошенный пользователь не найден",
mod_cp.php
После
case 'doip':
$this->do_ip();
break;
добавил
case 'bioreactor':
$this->bioreactor();
break;
И добавил функцию:
function bioreactor()
{
global $std, $ibforums, $DB, $print, $INFO;
if ( $ibforums->member['mgroup'] != $ibforums->vars['admin_group'] )
{
$this->mod_error('cp_no_perms');
return;
}
$DB->query("SELECT * FROM ibf_members WHERE id = ".$ibforums->input['mid']);
if( $row = $DB->fetch_row() )
{
$del_topics = "";
$del_full_topics = "";
$del_topics_counter = "";
$del_posts_in_topic = 0;
$del_full_topics_counter = 0;
$DB->query("SELECT t.tid, t.posts, p.pid, p.author_id, p.author_name, p.topic_id
FROM ibf_topics t, ibf_posts p
WHERE p.topic_id = t.tid and p.author_id = '".intval($ibforums->input['mid'])."'
ORDER BY t.tid");
$ibf_stats_count = $DB->get_num_rows();
if($ibf_stats_count > 0)
{
while($mem = $DB->fetch_row())
{
$member_name = $mem['author_name'];
if($mem['posts'] == '0')
{
$del_full_topics .= $mem['tid'].",";
$del_full_topics_counter++;
}
else
{
if($del_topics_counter != $mem['tid'])
{
$del_topics .= "|".$del_posts_in_topic.", ".$mem['tid'];
$del_posts_in_topic = 1;
}
else
{
$del_posts_in_topic++;
}
$del_topics_counter = $mem['tid'];
}
}
$del_topics .= "|".$del_posts_in_topic;
$del_topics = str_replace("|0, ","",$del_topics);
$del_full_topics .= "endofstring";
$del_full_topics = str_replace(",endofstring","",$del_full_topics);
$del_full_topics = str_replace("endofstring","",$del_full_topics);
if($del_full_topics)$DB->query("DELETE FROM ibf_topics WHERE tid IN ( ".$del_full_topics." )");
$recall_topic_arr = explode(",", $del_topics);
foreach ($recall_topic_arr as $r_string)
{
$r_string_topic = explode("|",$r_string);
if($r_string_topic[0])$DB->query("UPDATE ibf_topics SET posts = ( posts - ".$r_string_topic[1]." ) WHERE tid = ".$r_string_topic[0]." LIMIT 1");
}
$DB->query("DELETE FROM ibf_posts WHERE author_id = ".intval($ibforums->input['mid']));
$ibf_stats_count = $ibf_stats_count - $del_full_topics_counter;
$DB->query("UPDATE ibf_stats SET TOTAL_REPLIES = (TOTAL_REPLIES - ".$ibf_stats_count.")");
if($del_full_topics_counter > 0)$DB->query("UPDATE ibf_stats SET TOTAL_TOPICS = (TOTAL_TOPICS - ".$del_full_topics_counter.")");
}
$DB->query("DELETE FROM ibf_messages WHERE member_id = ".intval($ibforums->input['mid']));
$DB->query("DELETE FROM ibf_tracker WHERE member_id = ".intval($ibforums->input['mid']));
$DB->query("DELETE FROM ibf_forum_tracker WHERE member_id = ".intval($ibforums->input['mid']));
$DB->query("DELETE FROM ibf_jposts WHERE journal_id = ".intval($ibforums->input['mid']));
$DB->query("DELETE FROM ibf_jcomments WHERE owner_id = ".intval($ibforums->input['mid']));
$DB->query("DELETE FROM ibf_moderators WHERE member_id = ".intval($ibforums->input['mid']));
$DB->query("DELETE FROM ibf_calendar_events WHERE userid = ".intval($ibforums->input['mid']));
$DB->query("DELETE from ibf_contacts WHERE member_id='".intval($ibforums->input['mid'])."' or contact_id='".intval($ibforums->input['mid'])."'");
$DB->query("DELETE from ibf_members WHERE id = ".intval($ibforums->input['mid']));
$DB->query("DELETE from ibf_pfields_content WHERE member_id = ".intval($ibforums->input['mid']));
$DB->query("DELETE from ibf_member_extra WHERE id = ".intval($ibforums->input['mid']));
$DB->query("DELETE from ibf_validating WHERE member_id = ".intval($ibforums->input['mid']));
$DB->query("SELECT id, name FROM ibf_members ORDER BY joined DESC LIMIT 1");
$memb = $DB->fetch_row();
$DB->query("SELECT COUNT(id) as members from ibf_members");
$r = $DB->fetch_row();
$DB->query("UPDATE ibf_stats SET MEM_COUNT = '".$r['members']."', LAST_MEM_NAME = '".$memb['name']."', LAST_MEM_ID = '".$memb['id']."'");
$std->Antibot_hard("<br><i>Модератор <a href='index.php?showuser=".$ibforums->member['id']."'>".$ibforums->member['name']."</a> вместе с удалением профиля <b>".$row['name']."</b></i>.",100,$row['ip_address']);
$print->redirect_screen( "профиль пользователя полностью удален", "act=idx" );
}
else
{
$this->mod_error('cp_no_user');
return;
}
}
Функцию Antibot_hard приводить не буду, скажу лишь, что она отвечает за редактирование эйчтиакцесса, пишет логи в специальный топик в форуме и делает еще много других полезных действий.
Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.
Вопрос
FatCat
Появился у меня один скучающий деятель: ходит по проксям, каждые 5-10 минут регистрирует вручную новый ник и пишет всякую фигню со скоростью 2 сообщения в минуту.
Забодало каждый раз лезть в админку удалять ник, чистить топики, банить очередной проксевый айпишник в эйчтиакцессе.
Сделал "мухобойку" в профиль. Удаляет от пользователя всё, в том числе и записи в mJournal'е.
lang_profile.php
skin_profile.php
После
function show_profile($info) { global $ibforums, $INFO;добавил
После
<a href='{$info['base_url']}act=Msg&CODE=02&MID={$info['mid']}'>{$ibforums->lang['add_to_contact']}</a>добавил
lang_modcp.php
mod_cp.php
После
case 'doip': $this->do_ip(); break;добавил
case 'bioreactor': $this->bioreactor(); break;И добавил функцию:
function bioreactor() { global $std, $ibforums, $DB, $print, $INFO; if ( $ibforums->member['mgroup'] != $ibforums->vars['admin_group'] ) { $this->mod_error('cp_no_perms'); return; } $DB->query("SELECT * FROM ibf_members WHERE id = ".$ibforums->input['mid']); if( $row = $DB->fetch_row() ) { $del_topics = ""; $del_full_topics = ""; $del_topics_counter = ""; $del_posts_in_topic = 0; $del_full_topics_counter = 0; $DB->query("SELECT t.tid, t.posts, p.pid, p.author_id, p.author_name, p.topic_id FROM ibf_topics t, ibf_posts p WHERE p.topic_id = t.tid and p.author_id = '".intval($ibforums->input['mid'])."' ORDER BY t.tid"); $ibf_stats_count = $DB->get_num_rows(); if($ibf_stats_count > 0) { while($mem = $DB->fetch_row()) { $member_name = $mem['author_name']; if($mem['posts'] == '0') { $del_full_topics .= $mem['tid'].","; $del_full_topics_counter++; } else { if($del_topics_counter != $mem['tid']) { $del_topics .= "|".$del_posts_in_topic.", ".$mem['tid']; $del_posts_in_topic = 1; } else { $del_posts_in_topic++; } $del_topics_counter = $mem['tid']; } } $del_topics .= "|".$del_posts_in_topic; $del_topics = str_replace("|0, ","",$del_topics); $del_full_topics .= "endofstring"; $del_full_topics = str_replace(",endofstring","",$del_full_topics); $del_full_topics = str_replace("endofstring","",$del_full_topics); if($del_full_topics)$DB->query("DELETE FROM ibf_topics WHERE tid IN ( ".$del_full_topics." )"); $recall_topic_arr = explode(",", $del_topics); foreach ($recall_topic_arr as $r_string) { $r_string_topic = explode("|",$r_string); if($r_string_topic[0])$DB->query("UPDATE ibf_topics SET posts = ( posts - ".$r_string_topic[1]." ) WHERE tid = ".$r_string_topic[0]." LIMIT 1"); } $DB->query("DELETE FROM ibf_posts WHERE author_id = ".intval($ibforums->input['mid'])); $ibf_stats_count = $ibf_stats_count - $del_full_topics_counter; $DB->query("UPDATE ibf_stats SET TOTAL_REPLIES = (TOTAL_REPLIES - ".$ibf_stats_count.")"); if($del_full_topics_counter > 0)$DB->query("UPDATE ibf_stats SET TOTAL_TOPICS = (TOTAL_TOPICS - ".$del_full_topics_counter.")"); } $DB->query("DELETE FROM ibf_messages WHERE member_id = ".intval($ibforums->input['mid'])); $DB->query("DELETE FROM ibf_tracker WHERE member_id = ".intval($ibforums->input['mid'])); $DB->query("DELETE FROM ibf_forum_tracker WHERE member_id = ".intval($ibforums->input['mid'])); $DB->query("DELETE FROM ibf_jposts WHERE journal_id = ".intval($ibforums->input['mid'])); $DB->query("DELETE FROM ibf_jcomments WHERE owner_id = ".intval($ibforums->input['mid'])); $DB->query("DELETE FROM ibf_moderators WHERE member_id = ".intval($ibforums->input['mid'])); $DB->query("DELETE FROM ibf_calendar_events WHERE userid = ".intval($ibforums->input['mid'])); $DB->query("DELETE from ibf_contacts WHERE member_id='".intval($ibforums->input['mid'])."' or contact_id='".intval($ibforums->input['mid'])."'"); $DB->query("DELETE from ibf_members WHERE id = ".intval($ibforums->input['mid'])); $DB->query("DELETE from ibf_pfields_content WHERE member_id = ".intval($ibforums->input['mid'])); $DB->query("DELETE from ibf_member_extra WHERE id = ".intval($ibforums->input['mid'])); $DB->query("DELETE from ibf_validating WHERE member_id = ".intval($ibforums->input['mid'])); $DB->query("SELECT id, name FROM ibf_members ORDER BY joined DESC LIMIT 1"); $memb = $DB->fetch_row(); $DB->query("SELECT COUNT(id) as members from ibf_members"); $r = $DB->fetch_row(); $DB->query("UPDATE ibf_stats SET MEM_COUNT = '".$r['members']."', LAST_MEM_NAME = '".$memb['name']."', LAST_MEM_ID = '".$memb['id']."'"); $std->Antibot_hard("<br><i>Модератор <a href='index.php?showuser=".$ibforums->member['id']."'>".$ibforums->member['name']."</a> вместе с удалением профиля <b>".$row['name']."</b></i>.",100,$row['ip_address']); $print->redirect_screen( "профиль пользователя полностью удален", "act=idx" ); } else { $this->mod_error('cp_no_user'); return; } }Функцию Antibot_hard приводить не буду, скажу лишь, что она отвечает за редактирование эйчтиакцесса, пишет логи в специальный топик в форуме и делает еще много других полезных действий.
Изменено пользователем FatCatСсылка на комментарий
Поделиться на других сайтах
1 ответ на этот вопрос
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.