Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2497 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] CGI qui parse le STDIN n'importe comment

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Perl] CGI qui parse le STDIN n'importe comment

n°2207024
Zugluk
Posté le 17-10-2013 à 12:08:22  profilanswer
 

Salut à tous, voila j'ai un script perl très simple pour récupérer le STDIN, cela dit l'idiot me met dans les parametres dans ma variable CGI créée les "boundaries", guillemets, des carriages return etc... et je ne comprends absolument pas pourquoi. J'ai vérifié ce qu'il y avait dans le STDIN et tout me semble correct pourtant. J'utilise Nginx comme serveur web 1.5.6 (j'ai essayé avec différentes versions). =(. Une idée peut être :
 

Code :
  1. #!/sbin/perl
  2. use Socket;
  3. use EV;
  4. use AnyEvent;
  5. use AnyEvent::FCGI;
  6. use CGI qw/:standard -debug/;
  7. &main;
  8. sub main {
  9.     $> = 33;
  10.     $) = 33;
  11.     STDOUT->autoflush(1);
  12.     STDIN->autoflush(1);
  13.     my $fcgi = new AnyEvent::FCGI(
  14.       host => "127.0.0.1",
  15.       port => "8888",
  16.       on_request => sub {
  17.         my $request = shift;
  18.         AnyEvent->now_update;
  19.         local %ENV = %{$request->params};
  20.         local *STDIN;
  21.         open STDIN, '<', \$request->read_stdin;
  22.         my $q = CGI->new(\*STDIN);
  23.         close STDIN;
  24.         $request->print_stdout($q->header(-type => "text/html; charset=ISO-8859-1" )."Upload Done; error = ".$request->print_stderr($q->header()));
  25.         $q->delete_all();
  26.         $request->finish;
  27.       }
  28.     );
  29.     EV::loop;
  30. }
  31. 1;


 
 
et voila ce que j'obtiens dans $q :
 

Code :
  1. $VAR1 = bless( {
  2.                  '.parameters' => [
  3.                                     '------WebKitFormBoundaryRzFR2lUHHjnwyfZj
  4. Content-Disposition: form-data',
  5.                                     ' name'
  6.                                   ],
  7.                  'use_tempfile' => 1,
  8.                  '.charset' => 'ISO-8859-1',
  9.                  '.fieldnames' => {},
  10.                  'param' => {
  11.                               ' name' => [
  12.                                            '"file"
  13. ------WebKitFormBoundaryRzFR2lUHHjnwyfZj
  14. Content-Disposition: form-data',
  15.                                            '"test"
  16. upp
  17. ------WebKitFormBoundaryRzFR2lUHHjnwyfZj
  18. Content-Disposition: form-data',
  19.                                            '"submit"
  20. Valider
  21. ------WebKitFormBoundaryRzFR2lUHHjnwyfZj--
  22. '
  23.                                          ],
  24.                               '------WebKitFormBoundaryRzFR2lUHHjnwyfZj
  25. Content-Disposition: form-data' => [
  26.                                                                                                               ''
  27.                                                                                                             ]
  28.                             },
  29.                  'escape' => 1
  30.                }, 'CGI' );


Message édité par Zugluk le 18-10-2013 à 16:50:32
mood
Publicité
Posté le 17-10-2013 à 12:08:22  profilanswer
 

n°2207238
Zugluk
Posté le 18-10-2013 à 16:48:56  profilanswer
 

Pour ce que ça interesse, ça ne marche pas car l'environement est persistent. Ainsi il faut utiliser la librarie "CGI::Stateless" et remplacer "my $q = CGI->new(\*STDIN);" par "my $q = new CGI::Stateless"
 
Voir la doc de la librarie pour plus d'info.

n°2207259
gilou
Modérateur
Modzilla
Posté le 18-10-2013 à 17:54:10  profilanswer
 

Merci pour l'info! :jap:  
A+,


Message édité par gilou le 18-10-2013 à 17:54:23

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] CGI qui parse le STDIN n'importe comment

 

Sujets relatifs
perl + xml[Perl] Utilisation correcte de timeout_call
Préprod/Prod, cpan, activestate, intégration librairies[perl] process defunct avec fork et exec
[Perl] Eviter les commandes systemCommande cp dans un script PERL
[Résolu][Perl]Regrouper, compter et additionnerinstallation activate perl version 5.16 sous linux
script perl[Résolu][Perl] Découper un fichier en plusieurs et optimisation
Plus de sujets relatifs à : [Perl] CGI qui parse le STDIN n'importe comment


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR