Hallo Perl Freaks :)ich habe ein hoffentlich kleines Problem. Auf unserer Homepage www.feuerwehr-wernau.de ( das soll keine Werbung sein) haben wir ein perl/cgi Gästebuch. Zur Zeit leider mit sehr vielen spam Einträgen wie z.B. Visit http://www... usw.
Im Script gibt es schon kleine Programmzeilen die zu wenig Text oder zuviel Text aussondern sollen Ausschnitte des Scripts folgen unten.
--> Nun hab ich mir gedacht ( Bin selbst Perl Anfänger ) Ich schreibe eine Schleife rein die das Textfeld Buchstabe für Buchstabe durchsucht und diese Wörter oder einfach Buchstaben Aneinanderkettungen wie "http" "www" findet, mit den zuvor angegebenen wörtern vergleicht und dann sofort rausschmeisst bzw. eine html datei öffnet...
hab schon verschiedenes versucht aber leider hat es bisher nicht geklappt :(
Ich hoffe Ihr könnt mir mit den paar Programmzeilen helfen :)
Was auch Möglich wäre das Gästebuch speichert alle Einträge in einer textdatei data.txt
Dort immer die letzte Zeile unterscuhen und bei bedarf rauslöschen aber ich habe auch keine Ahnung wie ich das anstellen soll :(
Jetzt kommt das so wie ichs mir vorstelle aber leider nicht umsetzten kann...
### Spameintraege finden#############
wenn im Textfeld $bösewörter gefunden werden
z.B. "http" oder "www"
then open html file
and exit :)
und das sind ein paar programmzeilen aus dem script...
### counting words. the user is already locked -> flood protection #############
$zeile = $FORM{'comments'};
for ($i=0;$i<length($zeile);$i++) {
if (substr($zeile,$i,1) eq " ") {
$woerter++;
}
}
$woerter++;
if ($woerter < $min_words) {
cat("$htmldir/err_less_words.html");
exit;
}
### counting characters af any word -> flood protection ##########################
@all_words = split / /, $zeile;
foreach $wort (@all_words) {
$i=0;
my @buchstaben = map $i++, split //, $wort;
if ($i > $max_chars) {
cat("$htmldir/err_long_words.html");
exit;
}
}
Datum: 01.06.2006-20:02
