IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web Perl Discussion :

Gérer les erreurs http en perl


Sujet :

Web Perl

  1. #1
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut Gérer les erreurs http en perl
    Bonjour

    Pour la gestion des erreurs http (404 et 403), j'ai toujours utilisé le fichier .htaccess avec les redirections qui vont bien. Je voudrais savoir s'il on peut faire la même chose en perl ?

    Avez-vous des exemples s'il vous plaît ?

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Je ne suis pas sûr de bien comprendre la question ? Les fichiers .htaccess sont complètement indépendants du langage de programmation utilisé pour la partie serveur d'un site. Ou parles-tu d'écrire des handlers Apache en Perl ? C'est possible avec mod_perl (on peut faire des trucs très sympa avec ça), mais je ne vois pas trop le rapport avec les redirections ?

    --
    Jedaï

  3. #3
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Bonjour

    Je me suis mal exprimé

    Je voulais savoir si via un script perl, il était possible de générer une page d'erreur en fonction du code d’en-tête HTTP comme 403 ou encore 404 stocké par exemple dans une variable ?

    J'ai trouvé un exemple en php. Voici l'exemple.

    Merci

  4. #4
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Hum.. La partie .htaccess reste strictement identique sauf que tu remplace le "erreur.php?403" par un "erreur.pl?e=403" et le script est un script CGI parfaitement ordinaire, qui donnerait par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #!/usr/bin/perl
    use strict; use warnings;
    use CGI qw(:standard);
     
    my %errors = ( 
      401 => "La syntaxe de la requête est mal formulée ou est impossible à" 
                . " satisfaire",
      403 => "L’accès à la ressource est interdit",
      404 => "Page introuvable ou modifiée",
      500 => "Erreur interne du serveur",
    );
     
    print header,
      start_html("Erreur " . param('e')),
      p( $errors{param('e')} ),
      end_html;
    Il s'agit juste d'une redirection par le serveur, tu pourrais tout à fait mettre des pages statiques, une par erreur pour le même effet (mais je suppose que l'objectif est de faire des statistiques ?).

    --
    Jedaï

  5. #5
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Bonjour Jedai

    Dans un premier temps, merci pour ton code, je vais le tester. Si je m'oriente vers perl pour générer les pages d'erreur, ce n'est pas pour les stats mais pour éviter justement de multiplier ces pages. Bien entendu, il est tout à fait possible de réaliser cette technique en php.

    Merki

  6. #6
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Bonjour

    Je reviens sur cette exercice portant sur la gestion des erreurs http.
    Monsieur le(s) Professeur(s), voici le fichier: error.cgi

    Ce script fonctionne mais je souhaiterai tout de même vos avis et commentaires.
    Je n'ai pas réussi à utiliser use strict; Je tombe souvent sur un problème de Global symbol "$variable" requires explicit package name.

    Je veux tout savoir

    Merci d'avance

  7. #7
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    il manque les my indiquant que ce sont des variables locales
    voila les lignes a modifier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    use strict;
    use CGI qw(:standard);               # Loading CGI module
    # ...
    my $cgi=new CGI;
     
    # Variables
    my $file='/home/olivier/cgi-bin/error.cgi';                    # File directory
    my @lastmodified=stat($file);                                         # Return the list value
    my $date=strftime("%Y/%m/%d %H:%M:%S",localtime($lastmodified[9]));   # Date conversion
    my $title={ };                                                        # Title page
     
    # Getting http error code
    my $code=$ENV{'QUERY_STRING'};
     
    # Loading function
    my %msg;
    &set_contents;
    pour les commentaires attendons les experts

  8. #8
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Merci pour cette correction. Les changements ont été apportés

    Heu cela ne fonctionne plus en ajoutant, use strict;

    Voici les messages obtenus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Global symbol "%msg" requires explicit package name at error.cgi line 45.
    Global symbol "%msg" requires explicit package name at error.cgi line 57.
    Global symbol "%msg" requires explicit package name at error.cgi line 69.
    Global symbol "%msg" requires explicit package name at error.cgi line 81.
    Global symbol "%msg" requires explicit package name at error.cgi line 106.
    Execution of error.cgi aborted due to compilation errors.
    Bon je vais travailler tout ça

  9. #9
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    attention au symbole devant le nom ligne 24

    c'est (déclaration d'un hash)

    et pas (déclaration d'un scalaire)

  10. #10
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Oui tu as raison, quel étourdit je fais

    Le script a été mis à jour.

    D'autres avis ?

    Merci Gardyen

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Proc. Stock. : Gérer les erreurs
    Par audreyc dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 29/03/2006, 15h51
  2. gérer les erreurs intebase avec delphi
    Par mondanikoffi dans le forum Bases de données
    Réponses: 1
    Dernier message: 14/12/2004, 16h46
  3. [Htaccess] Gérer les erreurs HTTP du type 404...
    Par Marshall_Mathers dans le forum Apache
    Réponses: 4
    Dernier message: 01/07/2004, 11h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo