Hi Struppi
Hier dass Komplette Skript:
#!/usr/bin/perl -w
# hier mach ich mal weiter.
# dann fehlt was:
use strict;
# zwingt uns dazu alle Variablen mit my zu deklarieren. nämlich
use CGI;
# > $cgi = new CGI;
my $cgi = new CGI;
# Aufgabe aller CGI Programmierung: Jeder Userinput ist böse
# wir müssen also den Userinput waschen und ihn dann zwischenspeichern.
# Das CGI Modul nimmt uns Arbeit ab. Aber waschen müssen wir selber.
# Wie waschen wir? Wir melden jeden Parameter an, den wir benutzen wollen
# Ein hash von Listen
# Das erste listenelement ist eine reguläre Expression.
# Das zweite Element ist der Defaultwert, bei Tiere einfach '';
my %DirtyInput = (
tiere => [ qr/^(?:kuh|pferd|schaf)$/, '' ],
# Ich will jedes Tier verwerfen,
# das nicht ein kuh ein schaf oder ein pferd ist
# hier weitere Parameter
# ...
);
my %CleanInput = ();
# in diesem Hash sollen unsere gewaschenen Inputs gespeichert werden.
# Nun will ich vom CGI Modul eine Liste aller Parameter,
# um darüber iterieren zu können.
foreach my $par ( $cgi->param ){
# in $_ ist der name des Parameter
# existiert dieser Name als Key in DirtyInputs ?
# sonst gehe einfach zum nächsten name
exists $DirtyInput{ $_ } or next;
# Der Wert jedes Parameters ist eine Liste, nicht ein einzelner Wert.
# Dies weise ich nun $CleanInput{$_} zu
# Der Ausdruck ist etwas kompliziert
$CleanInput{$_} = []; #initialisiere mit leerer Liste
@{ $CleanInput{$_} } = grep/$DirtyInput{$_}[0]/, $cgi->param{$_};
# grep holt alle Elemente aus $cgi->param{$_}, welche
# die reguläre Expression,. die in $DirtyInput{$_}[0] gespeicert ist
# erfolgreich passieren.
# expandiert läuft also im Moment ab:
# @{ $CleanInput{tiere} } = grep/$DirtyInput{tiere}[0]/, $cgi->param{tiere};
# bzw...
# @{ $CleanInput{tiere} } = grep/^(?:kuh|pferd|schaf)$/, $cgi->param{tiere};
}
So, das macht er jetzt mit allen parametern.
Abfragen kannst du jetzt
foreach( @{ $CleanInput{tiere} } ) { .... }
print $CleanInput{tiere}[0];
push @{ $CleanInput{tiere} }, "ziege";
$CleanInput{haustiere} = $CleanInput{tiere};
Weitere Kommentare
print "Content-Type: text/html\n\n";
if($in{'tiere'} ne ''){
$mailp = "/usr/lib/sendmail";
$emailauto = " test@aol.com";
my $emailauto
$subjectauto = "Test";
my ...
open(MAIL,"|$mailp -t");
print MAIL "To: $emailauto\n";
print MAIL "From: $emailauto\n";
print MAIL "Subject: $subjectauto\n\n";
print MAIL "$in{'tiere'}";
hier müsstest du jetzt schreiben
print MAIL @{ $CleanInput{'tiere'} }, "\n";
close (MAIL);
print "Vielen Dank für die $in{'tiere'}";
}
print "<form action= "" method=post>
<input type="checkbox" name="tiere" value="Hund">Hund<BR>
label Felder !
<input type="checkbox" name="tiere" value="Katze">Katze<BR>
<input type="checkbox" name="tiere" value="Maus">Maus<BR>
<input type=submit></form>";
mfg Beat
--
><o(((°> ><o(((°>
<°)))o>< ><o(((°>o
Der Valigator leibt diese Fische
><o(((°> ><o(((°>
<°)))o>< ><o(((°>o
Der Valigator leibt diese Fische