решено Суперантиспам

Тема в разделе "Основные вопросы по TorrentPier", создана пользователем zxc, 6 янв 2017.

  1. zxc

    zxc Пользователь

    Сообщения:
    141
    Симпатии:
    52
    Версия TP:
    2.1 (R600)
    Нашел наконец для себя самый оптимальный вариант борьбы со спамерами :eek: Суть в том что баним IP и UID пользователей со стажем меньше месяца которые запостили ссылку в теме или ответе

    В posting.php перед submit_post(.............
    PHP:
    ///////ANTISPAM
    $is_spammer =  false;
    if(
        !empty(
    $message) AND
        (
    $userdata['user_id']>1) AND 
        (
    time()-$userdata['user_regdate'])<(60*60*30)
    ){
        
    $is_spammer = (stristr($message.$post_subject,'http://') OR stristr($message.$post_subject,'https://')) ? true false;

    }

    //\\\\\ANTISPAM



    //////ANTISPAM
    if($is_spammer){
        if (
    $mode=='newtopic')
        {
            
    $forum_id 230;   
        }   
        if (
    $mode=='editpost' OR $mode=='reply')
        {
            
    $forum_id 230;
            
    $topic_id 16509;
        }
       
        
    $sql "UPDATE " BB_USERS " SET user_active='0' WHERE user_id=".$userdata['user_id'];
        if ( !
    DB()->sql_query($sql) )
        {
            
    message_die(GENERAL_ERROR"Couldn't insert uid info into database"""__LINE____FILE__$sql);
        }
       
        
    $sql "INSERT INTO " BB_BANLIST " (ban_ip)
                    VALUES ('" 
    $userdata['user_last_ip'] . "')";
        if ( !
    DB()->sql_query($sql) )
        {
            
    message_die(GENERAL_ERROR"Couldn't insert ban_ip info into database"""__LINE____FILE__$sql);
        }   
       
       
        
    $sql "INSERT INTO " BB_BANLIST " (ban_userid) VALUES (" $userdata['user_id'] . ")";
        if ( !
    DB()->sql_query($sql) ){
            
    message_die(GENERAL_ERROR"Couldn't insert ban_userid info into database"""__LINE____FILE__$sql);
        }   
    }
    //\\\\\ANTISPAM
    В ajax/posts.php перед DB()->sql_query("INSERT INTO " . BB_POSTS.......................
    PHP:
    ///////ANTISPAM
    $is_spammer =  false;
    if(
        !empty(
    $message) AND
        (
    $userdata['user_id']>1) AND 
        (
    time()-$userdata['user_regdate'])<(60*60*30)
    ){
        
    $is_spammer = (stristr($message,'http://') OR stristr($message,'https://')) ? true false;
    }

    //\\\\\ANTISPAM



    //////ANTISPAM
    if($is_spammer){
       
        
    $post['forum_id'] = 230;
        
    $topic_id 16509;

       
        
    $sql "UPDATE " BB_USERS " SET user_active='0' WHERE user_id=".$userdata['user_id'];
        if ( !
    DB()->sql_query($sql) )
        {
            
    message_die(GENERAL_ERROR"Couldn't insert uid info into database"""__LINE____FILE__$sql);
        }
       
        
    $sql "INSERT INTO " BB_BANLIST " (ban_ip)
                    VALUES ('" 
    $userdata['user_last_ip'] . "')";
        if ( !
    DB()->sql_query($sql) )
        {
            
    message_die(GENERAL_ERROR"Couldn't insert ban_ip info into database"""__LINE____FILE__$sql);
        }   
       
       
        
    $sql "INSERT INTO " BB_BANLIST " (ban_userid) VALUES (" $userdata['user_id'] . ")";
        if ( !
    DB()->sql_query($sql) ){
            
    message_die(GENERAL_ERROR"Couldn't insert ban_userid info into database"""__LINE____FILE__$sql);
        }   
    }
    //\\\\\ANTISPAM

    Также нужно создать закрытый форум, который может просматривать только админ и в этом форуме создать тему. Ну и указать id этого форума и темы вместо
    $post['forum_id'] = 230;
    $topic_id = 16509;


    Но. После того как юзер попадает в банлист, он по прежнему может постить сообщения пока не разлогинится. Так что можно добавить проверку бан листа перед постингом юзером сообщения
     
    dexer7, Exile, Dr_Brown и ещё 1-му нравится это.
  2. Dr_Brown

    Dr_Brown Пользователь

    Сообщения:
    1.680
    Симпатии:
    313
    Версия TP:
    2.1 (R600)
    А что в форуме дублируются сообщения это юзера, или как, просто просматриваешь заходишь?

    А если ссылка по теме?
     
    Последнее редактирование: 6 янв 2017
  3. Dr_Brown

    Dr_Brown Пользователь

    Сообщения:
    1.680
    Симпатии:
    313
    Версия TP:
    2.1 (R600)
    Вообще расскажите как бан работает, как банить правильно, у нас есть

    деактивровать юзера в профиле
    забанить по нику
    забанить по ip

    что из этого делать, и что значит бан по UID
     
  4. zxc

    zxc Пользователь

    Сообщения:
    141
    Симпатии:
    52
    Версия TP:
    2.1 (R600)
    Создаем новый форум с правами доступа только для админа. В форуме создаем одну закрепленную тему. В коде прописываем айдишники на этот форум и тему

    Пользователь со стажем <30 дней пишет сообщение или создает тему в которой будет хоть одна ссылка автоматически попадает в бан лист а также его профиль деактивируется.

    Его сообщения и темы попадают в созданный нами закрытый форум

    Сообщения не дублируются, а подменяется forum_id и topic_id и все посты уходят в наш закрытый форум, как писал выше.

    Обычно новички не оставляют ссылок по теме, а заходят только нагадить
     
    Последнее редактирование: 6 янв 2017
  5. Dr_Brown

    Dr_Brown Пользователь

    Сообщения:
    1.680
    Симпатии:
    313
    Версия TP:
    2.1 (R600)
    zxc что бы юзер не мог писать сразу после бана, его нужно разлогинить автоматически, путем обнуления его сессии. Делал когда то уже блин не помню как.
     
    zxc нравится это.
  6. zxc

    zxc Пользователь

    Сообщения:
    141
    Симпатии:
    52
    Версия TP:
    2.1 (R600)
    Да кстати, хорошая идея
     
  7. Dr_Brown

    Dr_Brown Пользователь

    Сообщения:
    1.680
    Симпатии:
    313
    Версия TP:
    2.1 (R600)

    $inactive = 900; // 60*15 = минут
    if(isset($_SESSION['id']) ) {
    $session_life = time() - $_SESSION['start'];
    if($session_life > $inactive){
    header("Location: logout.php");
    }


    вот так делал, когдато, на одной из ферм, тока тут по времени выбрасывала, за неактивность.

    вообщем шото типа такого надо прикрутить
     
  8. Kryl

    Kryl Пользователь

    Сообщения:
    851
    Симпатии:
    235
    Версия TP:
    2.2.1
    Мне вот интересно , откуда UID берете ?
    UID вроде же это id сетевой карты или что то подобное , браузер UID не может дать , только через приложение , как в BF4 , там punkbuster ...
    Хотя может что то и путаю .
     
  9. zxc

    zxc Пользователь

    Сообщения:
    141
    Симпатии:
    52
    Версия TP:
    2.1 (R600)
    UID это я так user_id обзываю :ROFLMAO:
     
  10. Kryl

    Kryl Пользователь

    Сообщения:
    851
    Симпатии:
    235
    Версия TP:
    2.2.1

Поделиться этой страницей