Thomas: Formularausw. mit POST innerh. desselben CGI's unmöglich?

Beitrag lesen

Kann es sein, dass ich bei der Formularauswertung mittels POST an ein anderes eigenständiges CGI-Skript verweisen muss.
Bitte probiert es im unteneingefügten Code mal aus, mit get gehts, bei post nicht!!!Warum?
Hintergrund:
Möchte innerhalb des gleichen Scripts über Subroutinen die Formulare auswerten lassen.
Beispielcode:

#!/usr/bin/perl

Folgende Zeile nicht löschen, ansonsten keine Ausgabe in HTML!!!

print "Content-type: text/html\n\n";

use CGI qw(param);

$modus=param("modus");

print "Modus: $modus<br>";

if($modus eq "out")
{
 if ($ENV{'REQUEST_METHOD'} eq "GET") {
    $buffer = $ENV{'QUERY_STRING'};
} else {
    read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}

Nehme Daten entgegen und kopiere sie in die

Variable $buffer

@nvpairs = split(/&/,$buffer);

Ich teile den Datenstring in einzelne Teile.

foreach $pair (@nvpairs) {
    # Ich decodiere jedes der Teil
    ($name, $value) = split(/=/, $pair);
    $value =~ tr/+/ /;
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    $in{$name} = $value;

print %in;
    print $ENV{'REQUEST_METHOD'};
}

print "<HTML><HEAD>\n";
print "<TITLE>Umfrageauswertung</TITLE> \n";
print "</HEAD> \n";
print "<h2>Vielen Dank für Ihre Informationen.</h2>\n";
print "Sie gaben ein:<hr><dl>\n";
print "<dd>Ihr Lernerfolg war $in{'Lernerfolg'}\n";
print "<dd>Das Tempo der Vorlesung war $in{'Tempo'}\n";
print "<dd>Ihre Vorkenntnisse waren $in{'Vorkenntnisse'}\n";
print "<dd>Ihr Kommentar:<br> $in{'Kommentar'}\n";
print "<p>";
if (($in{'Tempo'} eq 'zu langsam')
&& ($in{'Lernerfolg'} eq 'nichts')) {
    print "<br>Du fauler Sack!<br>\n";
}

No comment here :))

sub Fehlermeldung {
    my $text= shift;
    print "<P><center>Es ist ein Fehler aufgetreten:<br>";
    print "$text\n";
    print "</center>";
    print "<p>Programm wird abgebrochen.\n";
    print "</HTML>\n";
    exit(1);
}
}

else
{
   print '
    <HTML>
    <HEAD><TITLE>Fragebogen</TITLE></HEAD>
    <BODY LINK="#182650" VLINK="#501826">

<form action="test.pl" method=post>
    <ol>
    <li><b>Ihr persönlicher Lernerfolg:</b><p>
     <ul>
     <li>Wieviel haben Sie in diesem Kurs gelernt?
      <dl><dd>
       <input type="radio" name="Lernerfolg"  value=0>sehr viel
       <input type="radio" name="Lernerfolg"  value=1>viel
       <input type="radio" name="Lernerfolg"  value=2 selected>ausreichend
       <input type="radio" name="Lernerfolg"  value=3>wenig
       <input type="radio" name="Lernerfolg"  value=4>nichts
      </dl>
     <li>Das Tempo war
     <select name=Tempo>
      <option value="zu schnell">zu schnell
      <option value="schnell">schnell
      <option value="genau richtig" selected>genau richtig
      <option value="etwas langatmig">etwas langsam
      <option value="zu langsam">zu langsam
     </select>

<li>Die Vorkenntnisse, die vorausgesetzt wurden, waren für mich
      <dl><dd>
       <input type="radio" name="Vorkenntnisse" value="viel zuviel">entschieden zuviel
       <input type="radio" name="Vorkenntnisse" value="etwas zuviel">etwas zuviel
       <input type="radio" name="Vorkenntnisse" value="genau richtig">genau richtig
       <input type="radio" name="Vorkenntnisse" value="etwas wenig">etwas wenig
       <input type="radio" name="Vorkenntnisse" value="viel zuwenig">entschieden zuwenig
      </dl>
     </ul>
    <p><li><b>Verbesserungsvorschläge:</b><p>
     <ul>
      <li>Weitere Kommentare oder Anregungen:
      <br>
      <dl><dd><textarea name="Kommentar" wrap="virtual" rows=3 cols=60>
       </textarea><P>
      </dl>
     </ul>
    </ol>
    <input type=submit value=" Fragebogen absenden ">
    <input type=reset value=" Alle Werte zurücksetzen ">
    <input type="hidden" name="modus" value="out">
    </form>
    </BODY></HTML>';
}