Cheatah: Cgi - UserData

Beitrag lesen

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