so langsam macht Perl Spaß!
gell?
Ist es eigentlich sinnvoll, im Formmailer nicht nur die Werte sondern auch deren Namen auf spam-/hackerverdächtige Elemente zu prüfen?
kommmt drauf an, was du vorhast.
Wenn du damit rausfinden möchtest, ob ein Versuch gestartet wurde das Skript zu manipulieren, ja. also schauen ob entweder seltsame Zeichen in den von dir erwarteten Parametern sind oder schauen ob Parameter kommen, die du nicht erwartest.
Oder kommen diese gar nicht an, wenn sie nicht der Namenskonvention entsprechen?
doch. Alle CGI Parameter werden vom CGI Modul ausgerwertet.
$mailtext = "";
foreach(@names) {
$name = $_;# $name prüfen <=========================================
@values = "";
@values = $query->param($name);
if($name ne "return" && $name ne "subject" && .....) {
Das ist nicht besonders schön.
einmal solltest du die Bedingung direkt hinter die Schleife setzten, da du ja ansonsten völlig unnötig den parameter abfragst, ausserdem sieht es so aus als ob du ohne use strict und Warnungen arbeitest. Das ist schlecht, gerade als Anfänger, aber auch bei der Entwicklung größerer Projekte können die Medlungen extrem nützlich sein.
foreach $value (@values) {
# $value prüfen
$mailtext = $mailtext.$name;
$mailtext = $mailtext.$delimiter;
$mailtext = $mailtext.$value."\n";
Wie in fast allen anderen Programmiersprachen gibt es auch in Perl die Möglichkeit einen Operator auf sich selbst anzuwenden.
$mailtext .= 'xxxxx';
entspricht:
$mailtext = $mailtext . 'xxxx'
Das geht auch mit den meisten anderen Operatoren:
my $x = 0;
$x += 10;
$x *= 2;
...
Also das ganze würde ich ungefähr so machen:
my $mailtext = "";
foreach my $name(@names)
{
if($name ne "return" && $name ne "subject" && .....)
{
my @values = $query->param($name);
foreach my $value (@values)
{
$mailtext .= "$name$delimiter$value."\n";
}
}
}
Struppi.
Javascript ist toll (Perl auch!)