Hilfe gegen GB-Spam

BSA

Erfahrenes Mitglied
Hi Leute!

Ich habe für einen Kumpel eine Webseite erstellt, der ein oder andere kennt diese evt. schon (http://www.lars-burchert.de). Leider gibt es seid einiger Zeit jemanden der das GB zuspammt mit Links zu etwaigen Porno- und Fun-Seiten. Gibt es eine möglichkeit dies zu verhindern? Eventuell würde das setzen eines Cookies helfen, aber das kann ja auch easy gelöscht werden. Besser wäre denke ich eine Wortfilterung. Kann man diese evt. auch schon über die MySQL Abfrage einbauen, sodass ich das Script nicht so arg verändern müsste?

Habt ihr evt. noch Ideen?

Würde mich sehr freuen!

Gruß BSA
 
Mit dieser Abfrage sollte nichts aufgerufen werden was *porn* oder *sex* enthaelt.
Das Problem dabei: Essex und Sussex in England werden auch ausgefiltert.

PHP:
$results=mysql_query("select * from gb where message not like '%porn%' and not like '%sex%'");
 
ok, ich werde mal versuchen eine vielseite Abfrage zu erstellen. Wie sieht es da mit der Performance aus?
 
*grübel*

Ich bekomme nen SQL Fehler, bin auf arbeit und hab hier nicht so die wirklich guten mittel das zu machen, aber es wäre sehr wichtig, kann da mal jemand rüber schauen:

Code:
 SELECT *
FROM lb_guestbook
WHERE guestbook_text NOT LIKE '%porn%'
AND NOT LIKE '%sex%'
AND NOT LIKE '%funnyhost.com%'
AND NOT LIKE '%homebusiness%'
LIMIT 0 , 30

Code:
#1064 - You have an error in your SQL syntax near 'like '%sex%' and not like '%funnyhost.com%' and not like '%homebusiness%'  LIMIT' at line 1
 
Code:
SELECT *
FROM lb_guestbook
WHERE guestbook_text NOT LIKE '%porn%'
  AND guestbook_text NOT LIKE '%sex%'
  AND guestbook_text NOT LIKE '%funnyhost.com%'
  AND guestbook_text NOT LIKE '%homebusiness%'
LIMIT 0 , 30
 
Ich bins nochmal, gibt es nicht auch irgendwie eine Möglichkeit die Begriffe bei denen der Eintrag nicht angezeigt werden soll in einer TXT oder DB zu speichern und dann das ganze wie in einer Schleife abzufragen? Also man kann ja die TXT Datei auslesen, die Datei in ein Array lesen und dann mit der Funktion in_array() (so oder so ähnlich hierß die glaube) überprüfen ob ein Begriff vorkommt, oder?!
 
Ja kann man.

Ich würde das ein bisschen anders lösen, damit es eine Allgemeingültige Lösung dafür gibt muss man ein wenig abstrahieren.

Du legst eine Art Blacklist Tabelle an, in der bestimmte Begriffe die ausgefiltert werden sollen vorkommen. Eventuell könnte man hier noch Wildmarks verwenden (fnmatch()).

Wird ein neuer Beitrag hinzugefügt, in dem ein in der Blacklist vorkommendes Wort auftaucht, blockst du ihn nicht komplett, sondern setzt seinen Status auf "moderated".
So geht dir z.B. auch Sussex und Essex nicht verloren, und du hast volle Kontrolle was du sehen willst und was nicht.
In der Administration müsste dann halt eine Funktion eingebaut sein, mit der du den Status des Kommentars ändern kannst.

Wenn du das mit OOP löst, kannst du Tabellennamen und Feldnamen für das "moderated"-Feld als Parameter übergeben und so eine Klasse erstellen die du immer wieder einsetzen kannst. -> Problemstellung für immer gelöst.

Wenn es schneller gehen soll und du keine Lust auf eine Universallösung hast, setze ein CAPTCHA ein (nicht wirklich Benutzerfreundlich), oder ändere einfach die Feldnamen des Formulars fürs Erste.
 
Zurück