Zum Inhalt, überspringe Kopfzeile Zur Navigation, überspringe Kopfzeile
Mit Plugin Discussion können Besucher des Wikis auf einfache Art und Weise Kommentare hinterlassen. Leider hat meine Erfahrung gezeigt das das Plugin sehr oft für Spam missbraucht wird. Das Plugin soll keine Eingaben mit möglichem Spam mehr abspeichern.
Da der Spam (zumindest der bei mir aufgelaufen ist) fast immer aus HTML-Code oder BB-Code in Verbindung mit Links bestand, soll das Plugin Discussion so abgeändert werden das diese Art von Eingaben nicht mehr entgegengenommen werden.
Dazu wird die Datei discussion.php aus dem Plugin entsprechend abgeändert. In dieser Datei wird der Anfang bis zur ersten Funktion (ist die Funktion tpl_discussion()) durch den folgenden Code ersetzt:
1: <?php 2: 3: /** 4: * Allows to add comments to a wiki page 5: * The discussion is stored in a separate file discussion:ns:wikipage 6: * 7: * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 8: * @author Esther Brunner <esther@kaffeehaus.ch> 9: * @author Dave Lawson <dlawson@masterytech.com> 10: * @author Pavel Vitis <pavel [dot] vitis [at] seznam [dot] cz> 11: */ 12: 13: global $ID; 14: global $REV; 15: global $ACT; 16: 17: $spam = @$_GET['spam']; 18: if ($spam == 1) { 19: msg('Kommentar wegen möglichem SPAM nicht abgespeichert!', -1); 20: } 21: 22: if (isDiscussionID($ID) && file_exists(wikiFN($ID))) { 23: session_write_close(); 24: 25: // Comment was submitted, let's save it 26: $sendComment = (int)$_POST['sendcomment']; 27: if ($sendComment == 1) { 28: $fullname = $_REQUEST['fullname']; 29: $email = $_REQUEST['email']; 30: $comment = $_REQUEST['wikitext']; 31: $spam = 0; 32: 33: $lowercomment = strtolower($comment); 34: $links = substr_count($lowercomment, '[url='); 35: $links+= substr_count($lowercomment, '[url]'); 36: $links+= substr_count($lowercomment, 'href='); 37: 38: if ($links != 0) $spam = 1; 39: 40: // Save only if comment is not empty 41: if (trim($comment, " \t\n") != '' and $spam == 0) saveComment($ID, $fullname, $email, $comment); 42: } 43: 44: // don't show discussion files, show main files instead 45: if ($ACT == 'show') { 46: if ($spam == 1) { 47: header("Location: ".wl(stripDiscussionNS($ID), '', true).'?spam=1'); 48: } else { 49: header("Location: ".wl(stripDiscussionNS($ID), '', true).'#discussion'); 50: } 51: 52: exit(); 53: } 54: }
Wie man sehen kann sucht nun das Plugin nach den Textstellen [url=, [url] und href= und zählt diese. Findet das Plugin nur eine von diesen Textstellen, so wird der Eintrag mit einer entsprechenden Fehlermeldung abgewiesen. Will man weitere Texte als Spam erkennen lassen, so erweitert man den Code um folgende Zeile:
$links+= substr_count($lowercomment, '[zu suchender Text]');
Zum Inhalt zurück, überspringe Navigation | Zum Seitenanfang