Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Codeschnipsel gegen Forumspammer

Fragen, Wünsche, Entwicklung: Wie kann man dieses Forum verbessern? Gibt es was zu meckern? Fehlt eine Kategorie?
Neues Thema Antworten
marc75
PostRank 9
PostRank 9
Beiträge: 1916
Registriert: 06.10.2004, 09:36

Beitrag von marc75 » 21.02.2007, 17:46

Weil hier heute mal wieder einige Spammer im Forum unterwegs sind, die Ihre Webseite an den Mann/Frau bringen wollen und jedes Unterforum zuspammen. Habe ich hier mal ein Codeschniepsel, womit verhindert wird das ein neuer User Urls posten kann. Ein User muss mindestens X (hier 10) Beiträge geschrieben haben bevor er eine Url posten kann.


Passend für phpbb Version weiß ich nicht. Kann man sicherlich anpassen.

Folgende Datei öffnen includes/functions_post.php
ab ca. Zeile 168 folgenden Code suchen

Code: Alles auswählen

 if ($mode == 'newtopic' || $mode == 'reply' || $mode == 'editpost') 
   { 
      // 
      // Flood control 
      // 
      $where_sql = ($userdata['user_id'] == ANONYMOUS) ? "poster_ip = '$user_ip'" : 'poster_id = ' . $userdata['user_id']; 
      $sql = "SELECT MAX(post_time) AS last_post_time 
         FROM " . POSTS_TABLE . " 
         WHERE $where_sql"; 
      if ($result = $db->sql_query($sql)) 
      { 
         if ($row = $db->sql_fetchrow($result)) 
         { 
            if &#40;intval&#40;$row&#91;'last_post_time'&#93;&#41; > 0 && &#40;$current_time - intval&#40;$row&#91;'last_post_time'&#93;&#41;&#41; < intval&#40;$board_config&#91;'flood_interval'&#93;&#41;&#41; 
            &#123; 
               message_die&#40;GENERAL_MESSAGE, $lang&#91;'Flood_Error'&#93;&#41;; 
            &#125; 
         &#125; 
      &#125;       
          
   &#125; 
den alten Code durch diesen hier ersetzen:

Code: Alles auswählen

  if &#40;$mode == 'newtopic' || $mode == 'reply' || $mode == 'editpost'&#41; 
   &#123; 
      // 
      // Flood control 
      // 
      $where_sql = &#40;$userdata&#91;'user_id'&#93; == ANONYMOUS&#41; ? "poster_ip = '$user_ip'" &#58; 'poster_id = ' . $userdata&#91;'user_id'&#93;; 
      $sql = "SELECT MAX&#40;post_time&#41; AS last_post_time 
         FROM " . POSTS_TABLE . " 
         WHERE $where_sql"; 
      if &#40;$result = $db->sql_query&#40;$sql&#41;&#41; 
      &#123; 
         if &#40;$row = $db->sql_fetchrow&#40;$result&#41;&#41; 
         &#123; 
            if &#40;intval&#40;$row&#91;'last_post_time'&#93;&#41; > 0 && &#40;$current_time - intval&#40;$row&#91;'last_post_time'&#93;&#41;&#41; < intval&#40;$board_config&#91;'flood_interval'&#93;&#41;&#41; 
            &#123; 
               message_die&#40;GENERAL_MESSAGE, $lang&#91;'Flood_Error'&#93;&#41;; 
            &#125; 
         &#125; 
      &#125; 
       
      // 
      // check Url spam 
      // 
      //Die 10 steht für die Anzahl Postings die ein User braucht bevor er eine URL posten kann.
      if&#40;$userdata&#91;'user_posts'&#93; < 10&#41; 
      &#123; 
         $lang&#91;'Alert_Spam'&#93; = 'Error&#58; Do Not Spam here!'; 
         if&#40;strstr&#40;$post_message, 'http'&#41; || strstr&#40;$post_message, 'www.'&#41;&#41; 
         &#123; 
            message_die&#40;GENERAL_MESSAGE, $lang&#91;'Alert_Spam'&#93;&#41;; 
         &#125; 
      &#125; 
          
   &#125; 
Datei speichern und hochladen, fertig.

Nachteil ist, wenn ein neuer User eine Frage zu seiner Domain hat und diese mit angibt, wird nix aus dem Posting. Sollte man den User vielleicht dann vor dem Schreiben darauf hinweisen. :D