MySQL Datenbank/Chatbox: Hilfe, SPAM!

fox

Angesehenes Mitglied
Werde nun total und chronisch zugemüllt mit spam in meiner MySQL-datenbank chatbox.
wink.gif


hm...was kann ich tun?
 
Natürlich, ich brauche einen spamfilter, aber ich kann ja nicht programmieren. Kann man sowas kaufen, oder gibt es scripte zum runterladen?
 
QUOTE (fox @ So 26.11.2006, 9:45)Natürlich, ich brauche einen spamfilter, aber ich kann ja nicht programmieren. Kann man sowas kaufen, oder gibt es scripte zum runterladen?

Dann mußt Du dich an den wenden, von dem Du die jetzige Software bezogen hast.

Und wenn es da keinen Support oder keine Weiterentwicklung gibt, dann war es das mit dieser Software wohl.

Also lernst Du das entweder selbst, bezahlst jemanden, der dir das macht oder verzichtest auf diese Software.

Ein langfristig gedachtes Projekt mit einer unausgereiften Software zu starten ist der Tod dieses Projektes und verscheucht alle bisherigen Nutzer gründlich.
 
Hallo Jürgen,
da hast du natürlich recht, da hätte ich mich vorher besser informieren sollen...

aber das chatbox-script von osxsux.net hat einfach einen guten eindruck gemacht. Einfach: nur name eingeben und text und abschicken. Ein schönes feature dazu: Es wird automatisch eine flagge vom jeweiligen land angezeigt.

Nur eben, man bekommt selten bis nie eine antwort vom programmierer....ist ja auch gratis.

Ein lösung die ich mir heute nacht überlegt habe: Jeder eintrag der 'http:' enthält soll automatisch gelöscht werden. Das müsste doch einfach möglich sein? Wie lautet der php befehl für das?

thanks!
 
in der Datei comments.php gibt es schon eine Filter-Funktion
ändere die Funktion check(), die ziemlich weit oben in der Datei steht, zu folgendem:
CODE
function check($string)

{

$replace = array();

$with = "xxxxxx"; //These characters replace the bad word. Change if desired.


$replace[] = "shit";
$replace[] = "fucking";
/* die paar badwords habe ich jetzt mal nicht alle mitgepostet... */

/* just keep adding them following that pattern */


if(strpos(strtolower($string), "http://")!==false) return false;


//*****NO EDITS BELOW THIS LINE - Or..the CSS is further down if you want*******



return str_replace($replace, $with, $string);

}






und ganz unten in der Datei änderst du die Zeilen


CODE
$commenttext = wordwrap($commenttext, 40, ' ', 1);

$sql = "INSERT INTO $tablename SET

name='$nametext',

comment='$commenttext',

date=NOW(),

ip='$ip' "&#59;

if (@mysql_query($sql)) {


in diese Zeilen:


CODE
if($commenttext!==false) $commenttext = wordwrap($commenttext, 40, ' ', 1);

$sql = "INSERT INTO $tablename SET

name='$nametext',

comment='$commenttext',

date=NOW(),

ip='$ip' "&#59;

if ($commenttext!==false && @mysql_query($sql)) {





dies sollte funktionieren... wird im kommentar ein "http://" gefunden (dabei ist groß- und kleinschreibung egal, da zur - und zwar nur zur - überprüfung der string mit strtolower in kleinbuchstaben verwandelt wird), so liefert check() false zurück und die weitere verarbeitung (die zeilenumbruch-funktion "wordwrap" und der eintrag in die datenbank) findet nicht statt

if ($commenttext!==false && @mysql_query($sql)) bewirkt dass zuerst geprüft wird, ob der wert, den check() zurück gab, nicht false ist.. ist es aber false, wird mysql_query gar nicht erst ausgeführt, da diese bedingung nie mehr wahr werden kann und für das ergebnis der bedingung der zweite teil völlig irrelevant ist.. ein einfaches "&" verändert dieses verhalten allerdings wieder.. muss also das doppelte & sein
 
Hola Bn!

Vielen dank soweit!!

Scheint schonmal viel besser zu sein:
es gab jetzt 3 einträge in denen kein text zu sehen ist. Allerdings werden diese einträge nicht automatisch gelöscht.
(Vielleicht wurden einige andere gelöscht...schwierig zu sagen...)
 
ich würde per java script beim aufruf der seite den button erst aktivieren

beim absenden für paar sekunden deaktivieren

und per wiedow set timeout wieder aktivieren

hab ich auch so in meinem Ajax Chat gemacht klappt super
 
Hi Daniel, danke für deine tips...

nur habe ich leider nicht die geringste ahnung wie das zu programmieren ist...
sad.gif


Handelt es sich nur ein paar zeilen code, oder ist das eine grössere arbeit?
 
QUOTE (fox @ Mo 27.11.2006, 14:31) Hola Bn!

Vielen dank soweit!!

Scheint schonmal viel besser zu sein:
es gab jetzt 3 einträge in denen kein text zu sehen ist. Allerdings werden diese einträge nicht automatisch gelöscht.
(Vielleicht wurden einige andere gelöscht...schwierig zu sagen...)

Die Lösung bezog sich auch nur auf neue Einträge.. Die alten, ungültigen musst du halt manuell entfernen.


Daniel_CB, in wie weit sollte ein "Deaktivieren" des Absende-Buttons die Spam-Problematik beheben?
 
Hi Daniel!

Jetzt siehts aber schon viel besser aus! Ich beobachte die situation noch für paar tage. Aber scheint definitiv zu funktionieren.

Hast du paypal?

aloha
fox
 
Zurück
Oben