Andreas Bierhals: STDIN kann nur einmal übergeben werden !?

Beitrag lesen

Moin!

So jetzt kommts. Wenn die Parameter über die Eingabezeile(URL) übergeben wird läuft alles im grünen Bereich. Sobald aber die Parameter über das POST eines Formulars übergeben werden, arbeitet die erste Funktion &getvars normal und leitet die Anfrage auch normal an das Hauptskript. Die Funktion &Parse_Form im Hauptskript bekommt nun aber keine Werte mehr zum analysieren.

Muß aber auch so sein, weil im Skriptablauf zweimal hintereinander der Befehl

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

aufgerufen wurde. Beim 2. mal wurde STDIN ja schon "ausgelesen" und liefert nix mehr nach. Ob man STDIN "schließen" und wieder "öffnen" und danach neu auslesen kann ist mir unbekannt, vielleicht weiß da jemand mehr...? Kleines Beispiel zur Veranschaulichung: Wenn Du z.B. stattdessen 2 mal den Befehl

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}/2);

verwenden würdest - also jedesmal nur die Hälfte der geposteten Datenmasse lesen - wäre es ja auch ziemlich unlogisch, wenn der read-Befehl auch beim 2. mal wieder "von oben anfangen" würde.

Da Du $buffer als globale Variable verwendest, ist Deine Lösung, einfach den 2. read-Befehl auszukommentieren, in der Tat korrekt.

Ich hoffe, ich konnte alle Klarheiten beseitigen ;-)

Viele Grüße

Andreas