Cgi - UserData
Commander Keen
Für ein aktuelles Perl-Projekt muss ich wissen wie man einem Perl-Script
über ein Form-Tag Daten übergeben kann!
Hat jeand eine Idee??
Thanx in advance, hotcore@gmx.net!
Hi,
Für ein aktuelles Perl-Projekt muss ich wissen wie man einem Perl-Script
über ein Form-Tag Daten übergeben kann!
über das Form-Tag selber gibst Du normalerweise keine Daten weiter, sondern über anschließende Input-Felder. Dazu kannst Du entweder dem Benutzer die Eingaben überlassen (<input type=text> etc.) oder selber Daten vordefinieren mit <input type=hidden name=Name value=Wert>. Im Perl-Script mußt Du diese Input-Felder dann noch auslesen. In meinen Scripts mache ich das immer so:
&GetQuery(*data);
sub GetQuery {
local (*qs) = @_ if @_;
if ($ENV{'REQUEST_METHOD'} eq "GET") { $qs = $ENV{'QUERY_STRING'}; }
elsif ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN,$qs,$ENV{'CONTENT_LENGTH'}); }
@qs = split(/&/,$qs);
foreach $i (0 .. $#qs) {
$qs[$i] =~ s/+/ /g;
$qs[$i] =~ s/%(..)/pack("c",hex($1))/ge;
($name,$value) = split(/=/,$qs[$i],2);
if ($qs{$name} ne "") { $qs{$name} = "$qs{$name}:$value"; }
else { $qs{$name} = $value; }
}
return 1;
}
Anschließend kannst Du mit dem Hash %data (Name in der ersten Zeile beliebig wählbar) die Werte verarbeiten:
print "$data{'Name'}"; gibt dazu "Wert" aus, wenn die Eingabe wie im obigen Beispiel erfolgte. Das Script kann übrigens später nicht mehr zwischen den Typen der Eingabefelder unterscheiden, ein <input type=text> wird genauso behandelt wie <input type=hidden>.
Jemand hat hier mal eine Routine gepostet, die (nach eigenen Angaben) mehr beachten soll, die habe ich aber leider nicht mehr. Wenn sich derjenige bitte noch einmal melden könnte... :-) Ich hatte aber mit obiger Routine noch keinerlei Probleme, bisher hat sie immer funktioniert.
Cheatah
hi!
Ich finde deine Methode immer noch viel zu umständlich.
if ($ENV{'REQUEST_METHOD'} eq "GET") { $EnvDaten = $ENV{'QUERY_STRING'}; }
else { read STDIN, $EnvDaten, $ENV{'CONTENT_LENGTH'}; }
for (split /&/, $EnvDaten)
{
tr/+/ /;
s/%([a-fA-F0-9]{2})/pack("C", hex($1))/eg;
($key, $value) = split /=/;
$data{$key} = $value;
}
bye, Frank!
hi!
Für ein aktuelles Perl-Projekt muss ich wissen wie man einem Perl-Script
über ein Form-Tag Daten übergeben kann!
Hat jeand eine Idee??
Hast du schonmal dran gedacht, dich selbst zu informieren, bevor du eine Frage postest? <../../tgcm.htm>
bye, Frank!