FatCat Опубликовано 13 Декабря 2008 Жалоба Поделиться Опубликовано 13 Декабря 2008 Набросал на скорую руку, весь интерфейс через жопdie() skin_modcp.phpПосле <select name='iptool' class='forminput'> <option value='resolve'>{$ibforums->lang['ip_resolve']}</option> <option value='posts'>{$ibforums->lang['ip_posts']}</option> <option value='members'>{$ibforums->lang['ip_members']}</option>добавить: <option value='ban'>Ban</option> <option value='unban'>UnBan</option> mod_cp.phpПосле $this->output .= $this->html->mod_simple_page( $ibforums->lang['cp_results'], $ibforums->lang['ip_resolve_result'] ); return TRUE; } }добавить else if ($ibforums->input['iptool'] == 'ban') { if(is_writeable( '.htaccess' )) { @ob_start(); include( '.htaccess' ); $htaccess = @ob_get_contents(); @ob_end_clean(); if(!stristr($htaccess,"Deny from ".$ibforums->input['ip'])) { $htaccess = str_replace("Allow from All","Deny from ".$ibforums->input['ip'].PHP_EOL."Allow from All",$htaccess); $fh = fopen('.htaccess', "w"); fwrite($fh, $htaccess); fclose($fh); die("<h1 align='center'>Выполнено!!!<br>".$ibforums->input['ip']." забанен.</h1>"); } else { die("<h1 align='center'>Этот IP-адрес УЖЕ запрещен файлом .htaccess !!!<br>Ищите другие баны этого пользователя.</h1>"); } } else { die("<h1 align='center'>Нет доступа к файлу .htaccess !!!</h1>"); } } else if ($ibforums->input['iptool'] == 'unban') { if(is_writeable( '.htaccess' )) { @ob_start(); include( '.htaccess' ); $htaccess = @ob_get_contents(); @ob_end_clean(); if(stristr($htaccess,"Deny from ".$ibforums->input['ip'])) { $htaccess = str_replace("Deny from ".$ibforums->input['ip'].PHP_EOL,"",$htaccess); $fh = fopen('.htaccess', "w"); fwrite($fh, $htaccess); fclose($fh); die("<h1 align='center'>Выполнено!!!<br>".$ibforums->input['ip']." разбанен.</h1>"); } else { die("<h1 align='center'>Этот IP-адрес не запрещен файлом .htaccess !!!<br>Ищите другие баны этого пользователя.</h1>"); } } else { die("<h1 align='center'>Нет доступа к файлу .htaccess !!!</h1>"); } } Очевидно, что файл .htaccess должен присутствовать и иметь как минимум такие инструкции:<Limit GET> Order Allow,Deny Allow from All </Limit> Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 24 Апреля 2009 Автор Жалоба Поделиться Опубликовано 24 Апреля 2009 Если нужно не только забанить по айпишнику, но и по нику, небольшое дополнение: Topics.phpВ функции view_ip($row, $poster)Найти где формируется гиперлинк, и в нем после<a href='{$ibforums->base_url}act=modcp&CODE=ip&incoming={$row['ip_address']}добавить&mid={$poster['id']} skin_modcp.phpНайти:<form name='ibform' action='{$ibforums->base_url}' method='post'> <input type='hidden' name='s' value='{$ibforums->session_id}'> <input type='hidden' name='act' value='modcp'> <input type='hidden' name='CODE' value='doip'>Добавить ниже<input type='hidden' name='mid' value='{$ibforums->input['mid']}'> Теперь в mod_cp.php айдишник юзера мы можем получить как значение переменной $ibforums->input['mid'].То есть, после else if ($ibforums->input['iptool'] == 'ban') {можно добавить запрос на смену группы: if( intval($ibforums->input['mid'])>0 )$DB->query("UPDATE ibf_members SET mgroup = 'ID группы baned' WHERE mid = ".$ibforums->input['mid']);или по желанию любые иные способы унижения этого пользователя в глазах общественности. Но будет проблема с разбаниванием:Исходная mgroup пользователя нигде не сохраняется; и в случае разбанивания придется всех разбаниваемых переводить в группу "пользователи" (или какую-то иную, но одну на всех), независимо от того, в какой группе он был до бана. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Dekker Опубликовано 24 Апреля 2009 Жалоба Поделиться Опубликовано 24 Апреля 2009 if( intval($ibforums->input['mid'])>0 )$DB->query("UPDATE ibf_members SET mgroup = 'ID группы baned' WHERE id = ".$ibforums->input['mid']); а так все просто супер !!! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.