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 :

Formulaire, redirections et gestion des erreurs


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 46
    Points : 23
    Points
    23
    Par défaut Formulaire, redirections et gestion des erreurs
    Bonjour,

    J'ai une page contact.php qui affiche un formulaire dont l'action renvoie vers contact_valid.php pour valider les paramètres, enregistrer les nouvelles données en base et envoyer un mail de notification. A la fin, ce script fait une redirection vers la page de consultation de tous les contacts.

    Avant tout, cette façon de faire (script de validation dédié + redirection) est-elle correcte ?

    Ma question porte alors sur la gestion d'erreur et/ou le passage d'information lors de la redirection. Par exemple, après la redirection, en arrivant sur la page de consultation de tous les contacts, j'aimerai afficher un message, soit pour dire qu'un mail est parti, soit pour dire qu'il y a eu une erreur lors de l'envoi de ce mail.

    J'arrive à avoir ces information dans le script contact_valid.php mais est-il possible de "faire passer" une information lors de la redirection ?

    Merci

    Xavier

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 58
    Points : 110
    Points
    110
    Par défaut
    Salut

    Oui, c'est possible en passant les paramètres dans l'url.

    Par exemple, si tout va bien, tu fais la redirection vers redir.php?code=success, et si tu as rencontré une erreur, tu fais la redirection vers redir.php?code=error.

    Et dans ta page redir.php, l'accès au paramètre code passé dans l'url se fait via la variable $_GET :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if ($_GET['code'] == 'success')
    {
      /* pas d'erreur */
    }
    elseif ($_GET['code'] == 'error')
    {
      /* Une erreur est survenue. Traitement adapté... */
    }

  3. #3
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Citation Envoyé par guilhem91 Voir le message
    Salut

    Oui, c'est possible en passant les paramètres dans l'url.

    Par exemple, si tout va bien, tu fais la redirection vers redir.php?code=success, et si tu as rencontré une erreur, tu fais la redirection vers redir.php?code=error.

    Et dans ta page redir.php, l'accès au paramètre code passé dans l'url se fait via la variable $_GET :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if ($_GET['code'] == 'success')
    {
      /* pas d'erreur */
    }
    elseif ($_GET['code'] == 'error')
    {
      /* Une erreur est survenue. Traitement adapté... */
    }
    Si les paramètres dans l'url te gênent tu peux toujours faire appel aux variable de sessions.
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 46
    Points : 23
    Points
    23
    Par défaut
    Bonjour,

    Et merci pour vos réponses si rapide !

    Citation Envoyé par Thes32 Voir le message
    Si les paramètres dans te gênent tu peux toujours faire appel aux variable de sessions.
    Oui, effectivement, je connais cette solution (passer par l'URL) mais je cherche justement une autre solution, surtout que j'aimerai pouvoir retrouver le message d'erreur qui risque de mal passer par l'URL.

    Je viens de retrouver quelques informations, est-ce bien ce qu'il faut faire ? Quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // Avant la redirection
    $_SESSION['mailError'] = .....;
     
    // Après la redirection
    if ($_SESSION['mailError']) {
       .....
    }
    Merci

    Xavier

  5. #5
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 374
    Points
    19 374
    Par défaut
    Citation Envoyé par xnopre Voir le message
    Bonjour,

    Et merci pour vos réponses si rapide !



    Oui, effectivement, je connais cette solution (passer par l'URL) mais je cherche justement une autre solution, surtout que j'aimerai pouvoir retrouver le message d'erreur qui risque de mal passer par l'URL.

    Je viens de retrouver quelques informations, est-ce bien ce qu'il faut faire ? Quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // Avant la redirection
    $_SESSION['mailError'] = .....;
     
    // Après la redirection
    if ($_SESSION['mailError']) {
       .....
    }
    Merci

    Xavier
    Oui, c'est le principe ! N'oublie pas le tout en haut de ta page
    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Je ne réponds pas aux questions techniques en MP.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 46
    Points : 23
    Points
    23
    Par défaut
    OK, ça marche impeccable avec une string.

    Maintenant, j'aimerai stocker un contexte plus complet, donc un objet. Mais il semble y avoir un problème ...

    Peut-on stocker un nouvel objet dans une variable de session ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $_SESSION['mailSentMessage'] = new Message(....);
    Ca semble "planter", la page n'est pas générée comme il faut, le script semble être interrompu ... (1)

    Ou faut-il serialiser l'objet pour le stocker ?

    Merci

    Xavier
    (1) Et d'ailleurs, comment en savoir plus en cas de "plantage" d'un script, à part ajout des "echo" un peu partout ... ?

  7. #7
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    salut,

    tu peux serialiser ton objet avant de le stocker dans la variable $_SESSION
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 46
    Points : 23
    Points
    23
    Par défaut
    Bonjour à tous,

    Retour pour ceux qui liront cela par la suite ...

    Donc effectivement, la solution est de serialiser l'objet. On peut même stocker un tableau de String, donc un tableau d'objets. J'ai donc généralisé le principe pour stocker plusieurs message, chaque objet contenant le type (erreur ou succès) et le texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $_SESSION['mailSentMessage'][] = serialize(new Message(....));
    L'exploitation se fait simplement, avec une boucle "for each" et un "unserialize" sur chaque String pour récupérer un objet Message.

    Merci pour l'aide,

    Xavier

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 01/01/2013, 22h10
  2. Formulaire et gestion des erreurs
    Par sam01 dans le forum Langage
    Réponses: 12
    Dernier message: 17/06/2010, 10h38
  3. Gestion des erreurs de formulaire
    Par TempusFugit dans le forum Langage
    Réponses: 4
    Dernier message: 29/10/2009, 16h34
  4. gestion des erreurs (validation de formulaires)
    Par mattyeux dans le forum Ruby on Rails
    Réponses: 6
    Dernier message: 26/11/2007, 08h53
  5. [LG]gestion des erreurs
    Par frontin dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2003, 23h41

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