POST und GET gleichzeitig (Perl)



  • Hallo,
    ich habe ein Formular, dass Daten per POST an ein Perlskript schickt. Die Formular-Action sieht dabei ungefähr so aus: action="foo.pl?page=0", damit will ich noch etwas, dass sonst, wenn POST nicht benutzt wird sowieso per GET gesendet wird, zusammen mit den POST-Daten als GET senden. Über CGI::param() bekomme ich aber nur die POST-Daten. Kann ich dem CGI-Modul irgendwie sagen, dass es beides parsen soll, oder muss ich GET dann von Hand auslesen?



  • Hat sich erledigt. Habe gerade CGI::url_param() gefunden..



  • auch wenn's sich schon erledigt hat:

    Bei GET kommen die Daten über $ENV{'QUERY_STRING'} rein,
    während du sie bei POST über STDIN einlesen kannst.

    Das Problem dabei ist, dass die Daten in Rohform vorliegen (also erst noch am & getrennt werden müssen und noch URL-Encoded sind).

    Im Selfhtml 7.0 war auch noch beschrieben, wie man an die Daten ohne CGI-Modul rankommt:

    if($ENV{'REQUEST_METHOD'} eq 'GET')
     {
      $Daten = $ENV{'QUERY_STRING'}
     }
    else
     {
      read(STDIN, $Daten, $ENV{'CONTENT_LENGTH'});
     }
    
    @Formularfelder = split(/&/, $Daten);
    foreach $Feld (@Formularfelder)  
     {
      ($name, $value) = split(/=/, $Feld);   
      $value =~ tr/+/ /;
      $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
      $value =~ s/<!--(.|\n)*-->//g;      
      $Formular[$i] = $name;   
      $i = $i + 1;
      $Formular[$i] = $value;   
      $i = $i + 1;
     }
    

    Quelle: http://saftsack.fs.uni-bayreuth.de/html/selfhtml/tgcm.htm

    mfg
    Martin



  • Jo, woher ich die beiden dann bekäme weiß ich auch. Allerdings wird in Tutorials für sicheres CGI immer davon abgeraten, das selbst zu machen, das CGI-Modul kann's halt. Trotzdem danke.


Anmelden zum Antworten