Tom: Einlesen eines Formulares

Hallöle,

Habe eine normale HTML-Seite die mit einem Formular per post-Modus Daten an ein Perl-Script schickt. Von dort aus werden die Daten mit folgendem Script eingelesen:

my (%Formular_s);
my ($Daten);

if($ENV{'REQUEST_METHOD'} eq 'GET')
 {
  $Daten = $ENV{'QUERY_STRING'};
 }
else
 {
  read(STDIN, $Daten, $ENV{'CONTENT_LENGTH'});
 }

my @Formularfelder = split(/&/, $Daten);

foreach (@Formularfelder)
 {
  (my $name, my $value) = split(/=/, $_);
  $value =~ tr/+/ /;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $value =~ s/<!--(.|\n)*-->//g;
  $Formular_s{$name} = $value;
 }

Problem: In den Hash bzw. schon in den ausgelesenen Datenstring $Daten werden Werte mit einem x und einer wahllosen zugehörigen Zahl sowie ein y mit einer ebenso wahllosen Zahl wiedergegeben.
Test evt. mit folgeder Anweisung.

print "Content-Type: text/html\n\n";
print %Formular_s;

Hier sieht man dann das x und y mit den jeweiligen Zahlen.
Besonders komisch ist die Tatsache, dass die Zahlen bei jedem Senden des HTML-Formulars anders sind.

Hat jemand eine Ahnung was das zu bedeuten hat?

Grüße euer Tom

  1. Moin!

    Hier sieht man dann das x und y mit den jeweiligen Zahlen.
    Besonders komisch ist die Tatsache, dass die Zahlen bei jedem Senden des HTML-Formulars anders sind.

    Hat jemand eine Ahnung was das zu bedeuten hat?

    Du hast vermutlich einen Image-Submitbutton - da wird die Klickposition auf dem Button vom Browser übermittelt. Wenn du dem Button einen Namen gibst, wird dem Namen das x und y jeweils angehängt (vielleicht getrennt durch einen Unterstrich). Ohne Namen gibts wohl nur x und y.

    Ach ja: Du willst lieber nicht das Formular selbst dekodieren, sondern dazu ein Perl-Modul benutzen - ist sicherer und viel einfacher, weil sich über die vielen Möglichkeiten der Datenübermittlung per Formular schon die besten Leute Gedanken gemacht haben. Dann mußt du selbst nämlich keine Sonderfälle mehr berücksichtigen etc.

    use CGI;

    - Sven Rautenberg