Max: Probleme bei Formulardaten auswertung

Ich habe folgende Problem:
Ich habe ein Formular erstellt:

<html>
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<form action="../cgi-bin/test.pl" method=post>
<input type="text" name="name">
<input type="text" name="email">
</form>
</body>
</html>

ich möchte jetzt, dass ein script diese daten auswertet und dann basierend darauf eine html seite erstellt. wie man das macht hab ich im forum schon gefunden, aber dort wo eigentlich die ausgewerteten daten auf der seite aufscheinen sollten ist garnichts. hier ist das perl-script (die seite wird problemlos erzeugt, nur die felder mit den daten bleiben leer):

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
   @pairs = split(/&/, $buffer);
   foreach $pair (@pairs) {
      ($name, $value) = split(/=/, $pair);
      $value =~ tr/+/ /;
      $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
      $value =~ s/<!--(.\n)*-->//g;
      $FORM{$name} = $value;
   }

open (HTMLDAT, ">perltry.htm");

#hier habe ich alles stark gekürzt, da keine wesentlich sachen dabei sind

print HTMLDAT "<center>", $FORM{'name'}, " emailadresse= ", $FORM{'email'}, "\n";

#hier habe ich alles stark gekürzt, da keine wesentlich sachen dabei sind

kann mir da wer helfen?

  1. Hallo Max,
    warum Dein Script nicht geht kann ich Dir auch nicht sagen. Ich habe Ihr aber eins mit dem ich schon mal gearbeitet habe und soweit ich weiß auch geht und es werden beide Methoden abgefragt, GET und POST.
    if ($ENV{'REQUEST_METHOD' eq "GET"){
    $eingabe=$ENV{'QUERY_STRING'};}
    else{read(STDIN,$eingabe,$ENV{'CONTENT_LENGTH'});}
    @eingabe=split(/&/,$eingabe);
    foreach $i (0..$#eingabe){
    $eingabe[$i]=~ s/+/ /g;
    $eingabe[$i]=~ s/%(..)/pack("c",hex($1))/ge;
    ($feldname,$wert)=split(/=/,$eingabe[$i],2);
    $eingabe{$feldname}=$wert;
    }
    übernehme keine Garantie auf Schreibfehler.
    In Forum habe ich, so glaube ich, eine noch einfachere Lsg gesehen, frage mich bitte nicht wo?
    Es war über ein Modul oder Fkt. gemacht worden die Perl zu verfügung stellt.

    Viele Grüße
    Thomas S.

  2. kann mir da wer helfen?

    Ja, CGI.pm zum Bespiel:

    use CGI qw(:standard);
    print HTMLDAT "<center>", &param('name'), " emailadresse= ", &param('email'), "\n";

    cu,
    Peter

    1. use CGI qw(:standard);
      print HTMLDAT "<center>", ¶m('name'), " emailadresse= ", ¶m('email'), "\n";

      Das Forum ist leider buggy. ¶m sollte heissen: Kaufmännisches Und gefolgt von param.

      cu,
      Peter

      1. Hi,

        print HTMLDAT "<center>", ¶m('name'), " emailadresse= ", ¶m('email'), "\n";

        Das Forum ist leider buggy. ¶m sollte heissen: Kaufmännisches Und gefolgt von param.

        nicht das Forum ist buggy, sondern Dein Browser, der "&par" fälschlicherweise als "&par;" interpretiert hat ;-)

        Abgesehen davon wäre param('name') ohne Kaufmannsund auch richtig gewesen...

        Cheatah

        1. Abgesehen davon wäre param('name') ohne Kaufmannsund auch richtig gewesen...

          Ja, wenn man nicht gerade "use strict" benutzt, was ja auch nicht unbedingt falsch ist.

          Peter Squentz

  3. Hi,

    ich möchte jetzt, dass ein script diese daten auswertet und dann basierend darauf eine html seite erstellt. wie man das macht hab ich im forum schon gefunden, aber dort wo eigentlich die ausgewerteten daten auf der seite aufscheinen sollten ist garnichts. hier ist das perl-script (die seite wird problemlos erzeugt, nur die felder mit den daten bleiben leer):

    wie Peter schon sagte, solltest Du Deine Auswertfunktion in den Müll schmeißen und statt dessen das Modul CGI.pm benutzen. Ich vermute aber, Dein Problem liegt daran, daß Du die Ausgabe auf dem _Bildschirm_ erwartest - Du schreibst aber in eine _Datei_.

    Ist es das?

    Cheatah