Jonas Hauenstein: Problem beim einlesen von Formulardaten

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

  1. 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

    --
    Dieser Beitrag wurde zu 100% aus ganzen Sätzen hergestellt und ist biologisch abbaubar.
    1. 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

  2. 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