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

Langage PHP Discussion :

Gestion des erreurs d'une page à l'autre


Sujet :

Langage PHP

  1. #1
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 911
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 911
    Points : 420
    Points
    420
    Par défaut Gestion des erreurs d'une page à l'autre
    Bonjour à tous,

    j'ai une page_1 et une page_2.

    Si l'internaute veut accéder à la page_2, je vérifie dans la peg_2 si la session connexion existe ( si l'internaute est connecté).
    S'il n'est pas connecté, je veux le renvoyer dans la page_1 en affichant un message d'erreur.

    Mon souci est le suivant : Comment récupérer le message d'erreur de la page_2 et le faire afficher dans la page d'où vient l'internaute ?

    Faut-il que je mette le message d'erreur dans une session ?

    Quelles solution avez-vous à me proposer ?
    Merci d'avance pour votre aide.

  2. #2
    Membre confirmé
    Avatar de Tesing
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2009
    Messages : 272
    Points : 453
    Points
    453
    Par défaut
    salut,

    oui, les informations de connexion sont stockées dans des variables de session.
    Le message d'erreur n'a pas a être stocké en session, mais c'est aussi une possibilité.

    Le tableau $_SESSION sert à stocker les informations de session. PHP utilise un gestionnaire de session par défaut qui stocke les informations dans des fichiers sur le disque dur.

    Le navigateur du client envoie dans les en têtes HTTP un identifiant de session.
    Pour initialiser une session, tu as la fonction session_start.
    Je te renvoies vers le manuel PHP pour plus d'informations.

  3. #3
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Effectivement, on peut dire que ce n'est pas vraiment le rôle des session de stocker ce genre d'infos, mais c'est tellement plus pratique est simple, alors c'est la technique que j'utilise.

    Le truc cependant, pour éviter de trimballer toutes les éventuelles erreurs au fur et à mesure de la navigation, c'est que dès qu'il faut en créer un, je purge cette donnée juste avant, au cas où.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['messageErreur'] = array();
    Puis comme un message d'erreur a un titre et un contenu, le message est construit de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $_SESSION['messageErreur'] = array('titre' => 'ERREUR DE SAISIE',
    					'message' => 'Une erreur de saisie sur ... bla bla bla ...');
    Puis une fois que le message est affiché, re-belotte, purge :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['messageErreur'] = array();

  4. #4
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 911
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 911
    Points : 420
    Points
    420
    Par défaut
    Ha d'accord.

    Pour répondre à Tesing, je ne demande comment fonctionne une session mais comment faîtes vous pour gérer les messages d'erreur d'une page à l'autre.

    Merci RunCodePhp, tu as parfaitement répondu à ma question.

    Je vais donc utiliser ta technique ;-))

    heu je voulais juste ajouter que s'il y a une autre technique (moins lourde) je suis preneur car je sais que les sessions c'est pas fait pour ça...

  5. #5
    Membre averti Avatar de BornBanane
    Homme Profil pro
    dev
    Inscrit en
    Mars 2007
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Mars 2007
    Messages : 284
    Points : 416
    Points
    416
    Par défaut
    Autre méthode :
    Tu peux renvoyé en GET un id d'erreur ( ex : page_1.php?err=3 ).
    Ensuite dans ta page_1 tu détectes que le variable $_GET['err'] existe et tu affiches suivant la valeur retournée.
    Exemple bidon :
    page_1.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
     
    $codeErr = array (1 => 'Bad request',2 => 'Forbiden', 3 => 'Not identified', );
     
    if (isset($_GET['err']) && isset($codeErr[$_GET['err']]) ) {
      // Affichage de l'erreur ...
    }
     
    // la suite de la page
    ?>

  6. #6
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 911
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 911
    Points : 420
    Points
    420
    Par défaut
    Bonsoir francoisIT,

    ta méthode me plaît bien, je pense que je vais plutôt opter pour ta méthode.
    Juste une chose (vous allez dire que j'abuse, je sais ).

    Au fait ma page de départ est la page_1, mais ça peut être une page x ou y et du coup, il faudrait que je garde cette page en mémoire afin de rediriger l'internaute vers la page d'où il vient.. Est-ce que c'est possible ça ?

  7. #7
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    La solution de francoisIT qui est qu chaque message correspond à un identifiant en est une, est peu très bien correspondre à un besoin, mais elle a ses limites malgré tout.

    Bien souvent, on ne peu se contenter d'un seul message, mais de plusieurs messages car lors d'un contrôle de formulaire, car une personne peu commettre plusieurs erreurs par exemple.
    L'idée de se baser sur des IDs de messages est bonne, mais faudrait à mon sens prévoir de renvoyer un tableau de plusieurs IDs, de les cumuler en somme au fur et à mesure que les erreurs sont détectées.

    Au fait ma page de départ est la page_1, mais ça peut être une page x ou y et du coup, il faudrait que je garde cette page en mémoire afin de rediriger l'internaute vers la page d'où il vient.. Est-ce que c'est possible ça ?
    Je ne pense pas que c'est à la gestion des messages d'erreurs de prévoir vers quelle page il faut rediriger, c'est plutôt la logique de ton programme qui va le définir, et au bout faire une redirection sur la page concernée.

    Cependant, il est tout à fait judicieux de prévoir de stocker le nom de la page dans le message d'erreur.
    Au bout, lorsqu'on arrive dans la page concernée, il faudrait prévoir de vérifier non seulement s'il y a un message d'erreur à afficher, mais aussi de contrôler si ce message concerne bien cette page.

    De plus, on peu se poser la question si les messages sont tous des messages d'erreurs ?
    A mon sens non, car on peu largement envisager de renvoyer à l'internaute un message lui remerciant d'avoir rempli correctement les informations demandée. Ce n'est pas une erreur.
    Ici, il n'y plus de notion de message d'erreur, mais de message tout court.
    Du coup, on peu envisager qu'un message contiendrait en plus une notion de "type" de message (genre : Info, erreur, danger par exemple).
    Ici, on a un élément permettant une présentation personnalisée selon le type de message.


    Bref ... on peu encore approfondir. C'est pour ça entre autre que mon choix c'est orienté vers les sessions qui au final me semble plus adapté, plus souple et plus évolutif.

  8. #8
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Salut

    Perso, je pense aussi que l'utilisation de session n'est pas incompatible, au contraire.

    Exemple :

    Page_1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    session_start();
    $erreurMessage = ' ';
    Page_2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    session_start();
    if ((!isset($_SESSION['bidule'])) etc...
    {  
    $erreurMessage = "Vous n'avez pas l'autorisation pour accéder à ce contenu, veuillez vous identifier.";
    header('Location: page_1.php');
    }
    Et bien sûr, le mesage peut être différent en fonction des différentes pages.
    Et l'avantage est que si il n'y a pas d'anomalie, $erreurMessage restera vide, donc pas de surcharge inutile.

  9. #9
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 911
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 911
    Points : 420
    Points
    420
    Par défaut
    OK.

    Merci à tous pour votre aide.

    Je vais voir dans un premier temps avec la méthode de francoisIT.

    S'il s'avère que c'est insuffisant (pour mon besoin en tout cas), je passerais aux sessions

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

Discussions similaires

  1. passer des valeurs d'une page à l'autre
    Par casaoui dans le forum ASP.NET
    Réponses: 8
    Dernier message: 13/06/2007, 17h55
  2. JEditorPane + gestion des frame d'une page HTML
    Par rprom1 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 21/12/2006, 17h08
  3. Gestion des erreurs sur une commande multiple
    Par domiq44 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 05/10/2006, 15h03
  4. [J2EE/JSP] Gestion des erreurs avec une base SQL server 2005
    Par critok dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 30/04/2006, 16h57
  5. [VB6] Gestion des erreurs dans une dll
    Par zimba-tm dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 02/08/2004, 11h20

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