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

  FORUM HardWare.fr
  Programmation
  Perl

  [PERL] CGI retourner un code erreur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PERL] CGI retourner un code erreur

n°2268108
web_olivie​r
R1 Powaaaaa
Posté le 20-10-2015 à 10:38:13  profilanswer
 

Bonjour,
 
J'ai un perl (CGI) qui permet de contrôler une liste d'URLs (urls.txt).
Si une de ces URLs ne renvoie pas un code 200 alors je veux que ma page se termine avec le code erreur http de la page testée.
 
Voici mon perl :
 

Code :
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use LWP::UserAgent;
  5. print "Content-type: text/html\n\n";
  6. my $browser = create_lwp_browser();
  7. my ($working, $broken, $odd) = get_status_codes($browser);
  8. sub get_status_codes
  9. {
  10.         my $browser = shift;
  11.         my $file='urls.txt';
  12.         open (INFO,$file);
  13.         my @lines = <INFO>;
  14.         close(INFO);
  15.         foreach my $p (@lines)
  16.         {
  17.                 chomp($p);
  18.                 my $response = $browser->get($p);
  19.                 if ($response->code ne "200" )
  20.                 {
  21. #                       print ($p." | ".$response->status_line."<br>" );
  22.                         print "Status: ".$response->status_line."<br>";
  23.                         print "Content-type: text/html<br><br>";
  24.                         exit;
  25.                 }
  26.         }
  27. }
  28. sub create_lwp_browser
  29. {
  30.         my $browser = LWP::UserAgent->new;
  31.         $browser->env_proxy;
  32.         $browser->timeout(30);
  33.         $browser->agent('checkurl.pl/1.0');
  34.         return $browser;
  35. }


 
Malgré tout mes essaies, je ne parviens pas à sortir avec le code erreur de la page testée et j'ai toujours un code 200 dans mes logs apache.
 
Quelqu'un peu'il m'aider à trouver la solution ?
 
Par avance merci.
 
 :hello:  

mood
Publicité
Posté le 20-10-2015 à 10:38:13  profilanswer
 

n°2268137
tpierron
Posté le 20-10-2015 à 14:54:45  profilanswer
 

Heu, ta ligne 7 contient :

Code :
  1. print "Content-type: text/html\n\n";


Donc tout ce que tu imprimes sur stdout par la suite sera interprété comme du HTML (avec un status 200 rajouté par apache automatiquement).
 
Qui plus est, aux lignes 25 à 27, les fins de lignes de l'entête HTTP, c'est "\n", pas "<br>".
 
Edit: ha, ha, je parie que t'avais "\n" avant, mais tu as converti ça en <br> parce que ça s'imprimait sur une ligne dans le navigateur.


Message édité par tpierron le 20-10-2015 à 14:57:16
n°2268138
web_olivie​r
R1 Powaaaaa
Posté le 20-10-2015 à 15:38:41  profilanswer
 

Bonjour Tpierron,
 
Tu as tout compris pour les <br> c'est corrigé. :jap:  
 
Par contre j'ai supprimé la ligne

Code :
  1. print "Content-type: text/html\n\n";

 mais plus rien ne s'affiche et j'ai toujours un code 200 :(
 
:hello:
 
EDIT: Je retire ce que j'ai dis, ça fonctionne :)
 
Merci beaucoup pour l'aide :jap:


Message édité par web_olivier le 20-10-2015 à 15:57:47

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

  [PERL] CGI retourner un code erreur

 

Sujets relatifs
Code de retour Runtime avec exitValueFreeMem() provoque une erreur sans plantage
e voudrais lancer plusieurs script Perl à partir d'un autre script PerErreur SQL ( Oracle ) 00936
Erreur 183 sur un CopyFile()erreur code php pour accès localhost
Vérification d'un codeNom d'un code Jquery
[SQL Server] Insert - erreur "Illegal data" 
Plus de sujets relatifs à : [PERL] CGI retourner un code erreur


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