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' ";
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' ";
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