Admin_777
Я немного изменил этот мод, сделал так, чтобы спамеры банились, которые ссылки оставляют + убрал из кода проверку и уведомления по email'у для случая, когда запрещенные фразы постит пользователь с сообщениями больше заданного.
Работает отлично 
 adcerber_config.php
adcerber_config.php
Код: Выделить всё
<?php
$ad_minpost=1; // До этого числа баним, свыше только информируем Админа и забиваем спам
$ad_replace='[SPAM]';
$ad_list=array("http://","www.");
?>
в оригинальную функцию переделал на:
functions_post.php
Код: Выделить всё
// This function check message for SPAM
function ad_cerber($message)
{
   global $ad_minpost, $ad_replace, $ad_list;
   global $userdata,$phpEx, $phpbb_root_path,$user_ip,$db,$board_config;
   if( $userdata['user_level'] == ADMIN ) return $message;
    include($phpbb_root_path . 'includes/adcerber_config.'.$phpEx);
    $clear=str_replace($ad_list,$ad_replace,$message);
    if($clear==$message) return $message; // OK. No AD or SPAM
    $mustdie=false;
    if( !$userdata['session_logged_in'] )
    {
        $sql = "INSERT INTO " . BANLIST_TABLE . " (ban_ip)
            VALUES ('" . $user_ip . "')";
      if ( !$db->sql_query($sql) )
      {
         message_die(GENERAL_ERROR, "Couldn't insert ban_ip info into database", "", __LINE__, __FILE__, $sql);
      }
      $sql = "DELETE FROM " . SESSIONS_TABLE . "
         WHERE session_ip ='$user_ip'";
      if ( !$db->sql_query($sql) )
      {
         message_die(GENERAL_ERROR, "Shit happens");
      }
        $mustdie=true;
    include($phpbb_root_path . 'includes/emailer.'.$phpEx);
    $emailer = new emailer($board_config['smtp_delivery']);
    $emailer->from($board_config['board_email']);
    $emailer->replyto($board_config['board_email']);
    $emailer->use_template('ad_cerber', $board_config['default_lang']);
    $emailer->email_address($board_config['board_email']);
    $emailer->set_subject('AD Cerber report');
    $emailer->assign_vars(array(
    'SITENAME' => $board_config['sitename'],
    'MESSAGE' => $message,
    'ACTION'=>($mustdie)?'***USER BANNED***':'',
    'USERNAME' => $userdata['username'],
    'IP' =>  decode_ip($user_ip)));
     $emailer->send();
     $emailer->reset();
    }
   else
   {
     if($userdata['user_posts']>$ad_minpost)$mustdie=false;
     else
     {
        $user_id=$userdata['user_id'];
        $sql = "UPDATE " . USERS_TABLE . " SET user_active=0
            WHERE user_id=$user_id";
      if ( !$db->sql_query($sql) )
      {
         message_die(GENERAL_ERROR, "Couldn't change user status", "", __LINE__, __FILE__, $sql);
      }
      $sql = "DELETE FROM " . SESSIONS_TABLE . "
         WHERE  session_user_id=$user_id";
      if ( !$db->sql_query($sql) )
      {
         message_die(GENERAL_ERROR, "Shit happens");
      }
        $mustdie=true;
    include($phpbb_root_path . 'includes/emailer.'.$phpEx);
    $emailer = new emailer($board_config['smtp_delivery']);
    $emailer->from($board_config['board_email']);
    $emailer->replyto($board_config['board_email']);
    $emailer->use_template('ad_cerber', $board_config['default_lang']);
    $emailer->email_address($board_config['board_email']);
    $emailer->set_subject('AD Cerber report');
    $emailer->assign_vars(array(
    'SITENAME' => $board_config['sitename'],
    'MESSAGE' => $message,
    'ACTION'=>($mustdie)?'***USER BANNED***':'',
    'USERNAME' => $userdata['username'],
    'IP' =>  decode_ip($user_ip)));
     $emailer->send();
     $emailer->reset();
     }
   }
//     if(!$mustdie) return $clear;
     if(!$mustdie) return $message;
     if($userdata['session_logged_in']) message_die(CRITICAL_MESSAGE, 'You_been_blocked');
     message_die(CRITICAL_MESSAGE, 'You_been_banned');
}