Hi MudGuard
Die Verwendung einer Zeichenklasse würde sich sowieso anbieten:
$name = s/[;<>*|[{}@]]//g;
Innerhalb der Zeichenklasse haben nur noch ganz wenige Zeichen Sonderbedeutung (das ^ falls es an erster Stelle steht, das - wenn es nicht an erster Stelle (bzw. an zweiter, falls an erster Stelle ein ^ steht) oder letzter Stelle steht, ])
Das mit dem Escapen habe ich dann später herausgefunden.
Das i ist nicht notwendig, da ja keine Buchstaben in Deinem Regex vorhanden sind, es also egal ist, ob Groß- oder Kleinschreibung vorliegt.
Danke,auf das ist mir später in den Sinn gekommen.
Für die Datenbank ist HTML-Code (wenn Datenbank-Kontext-gerecht escaped) überhaupt kein Problem.
Du meinst also es genügt, wenn ich lediglich das Semikolon aussperre, da es in der DB als Abtrenner dient?
HTML-Code muß dann gesondert behandelt werden, wenn eine Ausgabe in ein HTML-Dokument erfolgt.
Allgemeiner:
Strings müssen immer dann kontext-gerecht behandelt werden, wenn sie in einen anderen Kontext gebracht werden.
OK, jetzt verstehe ich langsam die worte deiner Vorredner *g*
Ganz schnell noch Code weil muß zur Arbeit:
------------------------------------------
my $sizename = length($name);
if($sizename > 20){
goto SizeError;
}
my $sizetext1 = length($text1);
if($sizetext1 > 50){
goto SizeError;
}
my $sizetext2 = length($text2);
if($sizetext2 > 50){
goto SizeError;
}
my $sizetext3 = length($text3);
if($sizetext3 > 50){
goto SizeError;
}
------------------------------------------
So checke ich auf ein selbergebautes Eingabeformular die Länge der CGI-Info.
Und so die unerwünschten Zeichen:
--------------------------------
$name =~ s/;//g;
$name =~ s/<//g;
$name =~ s/>//g;
$name =~ s/\*//g;
$name =~ s/|//g;
$name =~ s/[//g;
$name =~ s/]//g;
$name =~ s/{//g;
$name =~ s/}//g;
$name =~ s/@//g;
$name =~ s/&//g;
$name =~ s/\//g;
$text1 =~ s/;//g;
$text1 =~ s/<//g;
$text1 =~ s/>//g;
$text1 =~ s/\*//g;
$text1 =~ s/|//g;
$text1 =~ s/[//g;
$text1 =~ s/]//g;
$text1 =~ s/{//g;
$text1 =~ s/}//g;
$text1 =~ s/@//g;
$text1 =~ s/&//g;
$text1 =~ s/\//g;
$text2 =~ s/;//g;
$text2 =~ s/<//g;
$text2 =~ s/>//g;
$text2 =~ s/\*//g;
$text2 =~ s/|//g;
$text2 =~ s/[//g;
$text2 =~ s/]//g;
$text2 =~ s/{//g;
$text2 =~ s/}//g;
$text2 =~ s/@//g;
$text2 =~ s/&//g;
$text2 =~ s/\//g;
$text3 =~ s/;//g;
$text3 =~ s/<//g;
$text3 =~ s/>//g;
$text3 =~ s/\*//g;
$text3 =~ s/|//g;
$text3 =~ s/[//g;
$text3 =~ s/]//g;
$text3 =~ s/{//g;
$text3 =~ s/}//g;
$text3 =~ s/@//g;
$text3 =~ s/&//g;
$text3 =~ s/\//g;
--------------------------------
Scheint alles zu funktionieren.
Gruß Gary
PS.: Muss jetzt aber los
Bye