Problem beim einlesen von Formulardaten
Jonas Hauenstein
- cgi
Hallo
Also, damit ich ein Upload Script verwenden kann, muss ich die Daten eines Formulars mit Post als Methode mit ENCTYPE="multipart/form-data" übergeben.
Leider kann ich, sobald ich das entsprechende Formular mit ENCTYPE="multipart/form-data" versende, die Formulardaten mit der folgenden subrutine auslesen:
sub readinputs {
#read GET input
$get_input = $ENV{QUERY_STRING};
@fv_pairs = split /&/ , $get_input;
foreach $pair (@fv_pairs) {
if($pair=~m/([^=]+)=(.*)/) {
$field = $1;
$value = $2;
$value =~ s/+/ /g;
$value =~ s/%([\dA-Fa-f]{2})/pack("C", hex($1))/eg;
$INPUT{$field}=$value;
}
}
#read POST input
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;
$FORM{$name} = $value;
}
}
Sobald ich aber die ENCRYPT Methode wieder wegnehme im Formular kann er alle Daten einlesen, aber dann klappt das Upload Script wieder nicht mehr :(
Wie muss ich die obere Subrutine ändern, damit sie mir auch Formulardaten die mit ENCTYPE="multipart/form-data" übergeben werden einliest???
Ich bitte um HIIILFEEE!
Gruss
Jonas
Hallo Jonas,
Leider kann ich, sobald ich das entsprechende Formular mit ENCTYPE="multipart/form-data" versende, die Formulardaten mit der folgenden subrutine auslesen:
Du meinst wahrscheinlich "... mit der folgenden Subrutine *nicht* auslesen"?
$get_input = $ENV{QUERY_STRING};
In der Umgebunsvariable "QUERY_STRING" stehen die Forumlardaten nur, wenn die get-Methode verwendet wird. Bei der post-Methode kannst du es so anstellen:
read(STDIN , $get_input , $ENV{'CONTENT_LENGTH'});
Sobald ich aber die ENCRYPT Methode wieder wegnehme im Formular kann er alle Daten einlesen, aber dann klappt das Upload Script wieder nicht mehr :(
Welche ENCRYPT Methode?
Viel Erfolg,
Robert
Hallo Jonas,
Leider kann ich, sobald ich das entsprechende Formular mit ENCTYPE="multipart/form-data" versende, die Formulardaten mit der folgenden subrutine auslesen:
Du meinst wahrscheinlich "... mit der folgenden Subrutine *nicht* auslesen"?
Ja genau *g*
$get_input = $ENV{QUERY_STRING};
In der Umgebunsvariable "QUERY_STRING" stehen die Forumlardaten nur, wenn die get-Methode verwendet wird. Bei der post-Methode kannst du es so anstellen:
read(STDIN , $get_input , $ENV{'CONTENT_LENGTH'});
Weiss ich, aber dies benutze ich ja auch in der Subrutine. Ich benutze diese Subrutine auch zum auslesen der GET Variabeln.
Sobald ich aber die ENCRYPT Methode wieder wegnehme im Formular kann er alle Daten einlesen, aber dann klappt das Upload Script wieder nicht mehr :(
Welche ENCRYPT Methode?
Wie gesagt: Mit ENCTYPE="multipart/form-data" geht gar nix mehr wenn ich die Werte mit der Subrutine die ich gepostet habe auslese!!
Viel Erfolg,
Robert
moin,
nimm doch einfach das CGI Modul,
http://i-netlab.de/downloads/upload.shtml
Rolf
Hallo
Also, damit ich ein Upload Script verwenden kann, muss ich die Daten eines Formulars mit Post als Methode mit ENCTYPE="multipart/form-data" übergeben.
Leider kann ich, sobald ich das entsprechende Formular mit ENCTYPE="multipart/form-data" versende, die Formulardaten mit der folgenden subrutine auslesen:
sub readinputs {
#read GET input
$get_input = $ENV{QUERY_STRING};
@fv_pairs = split /&/ , $get_input;foreach $pair (@fv_pairs) {
if($pair=~m/([^=]+)=(.*)/) {
$field = $1;
$value = $2;
$value =~ s/+/ /g;
$value =~ s/%([\dA-Fa-f]{2})/pack("C", hex($1))/eg;
$INPUT{$field}=$value;
}
}#read POST input
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;
$FORM{$name} = $value;
}}
Sobald ich aber die ENCRYPT Methode wieder wegnehme im Formular kann er alle Daten einlesen, aber dann klappt das Upload Script wieder nicht mehr :(
Wie muss ich die obere Subrutine ändern, damit sie mir auch Formulardaten die mit ENCTYPE="multipart/form-data" übergeben werden einliest???
Ich bitte um HIIILFEEE!
Gruss
Jonas