CGI: POST-Übergabe funktioniert nicht!
tr8000
- perl
N' Abend!
Folgendes Script funktioniert bei mir nur mit der GET-Methode.
POST will einfach nicht.
Hab nach einem Tag ununterbrochenem "durchs www quälen" schon fast aufgegeben...
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
my $mycgi = new CGI;
print $mycgi->header(), $mycgi->start_html();
my $eingabe = undef;
if ($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN,$eingabe,$ENV{'CONTENT_LENGTH'});
}
else {
$eingabe = $ENV{'QUERY_STRING'};
}
if ($eingabe eq undef) {
print $mycgi->start_form({ -action => 'index.cgi',
-method => 'post',
-name => 'namenformular' }),
$mycgi->textfield({ -size => '40',
-name => 'name' }),
$mycgi->submit({ -value => 'Go' }),
$mycgi->end_form();
}
else {
print $eingabe;
}
print $mycgi->end_html();
Im Voraus vielen Dank für eure Hilfe!
greez
if ($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN,$eingabe,$ENV{'CONTENT_LENGTH'});
}
else {
$eingabe = $ENV{'QUERY_STRING'};
}
Wozu das?
Schmeiss dass Raus und dann müßte es gehen.
Struppi.
if ($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN,$eingabe,$ENV{'CONTENT_LENGTH'});
}
else {
$eingabe = $ENV{'QUERY_STRING'};
}Wozu das?
Schmeiss dass Raus und dann müßte es gehen.Struppi.
Nein, leider nicht.
Auch wenn ich nur Folgendes einsetze lande ich nur wieder beim leeren Formular...
my $eingabe = undef;
read(STDIN,$eingabe,$ENV{'CONTENT_LENGTH'});
Moin!
Auch wenn ich nur Folgendes einsetze lande ich nur wieder beim leeren Formular...
my $eingabe = undef;
read(STDIN,$eingabe,$ENV{'CONTENT_LENGTH'});
Und wenn du das ^^^ auch weglässt? Soweit ich weiß, liest das CGI-Modul bereits die POST-Daten ein, d.h. wenn du soweit bist welche abzuholen, sind diese schon „weg“. Dafür gibt es aber Wege und Möglichkeiten diese Daten über die param-Methode deines CGI-Objektes auszulesen:
# Der Querystring war ?key=val¶m=wert¶m=anderer
my $cgi = new CGI;
# gibt "val" aus:
print $cgi->param('key'), "\n";
# gibt "wert, anderer" aus:
print join(', ', $cgi->param('param')), "\n";
An dem letzten Beispiel erkennt man übrigens sehr schön, dass Perl im Gegensatz zu PHP auch mit mehrfachen Werten für einen URL-Parameter elegant umgehen kann.
Viele Grüße,
Robert
Nein, leider nicht.
Doch.
Auch wenn ich nur Folgendes einsetze lande ich nur wieder beim leeren Formular...
my $eingabe = undef;
read(STDIN,$eingabe,$ENV{'CONTENT_LENGTH'});
Du liest hier die Parameter aus und damit sind sie weg und das Modul kann sie nicht mehr einlesen. nutze die param() des CGI Moduls und gut ist.
Struppi.
Hallo,
my $mycgi = new CGI;
if ($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN,$eingabe,$ENV{'CONTENT_LENGTH'});
}
else {
$eingabe = $ENV{'QUERY_STRING'};
}
Also, wenn Du schon das CGI.pm einbindest, ja, dann, dann nutze es auch richtig und konsequent. Nämlich zum Parsen von Formulareingaben oder Parametern.
It means:
my $value = $mycgi -> param('ParameterName');
ist Dein Freund (ich auch).
Viele Grüße vom Buzzer