Hallo Cracks
Wer weiss Rat? Ich komme da mit einem Anfängerproblem nicht weiter, eine ähnliche Anordnung (IP-Filter) funktioniert einwadfrei, doch ich kann den Fehler im unten kommentierten Wörterfilter nicht finden...
Wörter-Filter: Folgende Komponente eines Gästebuch-Scripts soll den Inhalt eines Formularfeldes auf ausgeschlossene Begriffe aus einem Array überprüfen (und den Eintrag bei Übereinstimmung sperren).
Das Problem liegt wahrscheinlich in diesem Ausdruck
my $WZaehler = ($FORM{'comments'} =~ tr/$key_word//i);
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/perl -w
# Perl-Script zur Filterung des Formularfeldes $FORM{'comments'} nach Begriffen (aus Array)
# Problem: Die Zeile:
#
# my $WZaehler = ($FORM{'comments'} =~ tr/$key_word//i);
#
# ... ergibt immer true, auch wenn keine Uebereinstimmungen im Feldwert vorhanden sind!
# Aufgabe:
# Suche nach Begriffen, welche 1x enthalten sind (Platzhalter: wort.*)
# 'au' soll gefunden werden in Haus, aus, miau, miAU, blauschwarz
# i = ignoring case
# filtering of not allowed words (1 = ON/ 0 = OFF)
$use_keyfilter = 0;
@key_filterlist = ('.20six.co.uk','.netfirms.com');
# init
$keyword_found = 0;
#
# Key word filter
if($use_keyfilter) {
foreach $key_word (@key_filterlist) {
#
my $WZaehler = ($FORM{'comments'} =~ tr/$key_word//i);
#
if( $WZaehler > 0) {
$keyword_found = 1;
}
}
}
&no_permission unless !$keyword_found;
sub no_permission {
print "No permission to write this content!\n";
}