Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/08/2011, 12h41   #1
Invité de passage
 
Inscription : septembre 2007
Messages : 46
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 46
Points : 1
Points : 1
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
xnopre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 12h50   #2
Membre habitué
 
Homme Guilhem Tiennot
Étudiant
Inscription : mars 2010
Messages : 58
Détails du profil
Informations personnelles :
Nom : Homme Guilhem Tiennot
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2010
Messages : 58
Points : 100
Points : 100
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 :
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é... */
}
guilhem91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 13h03   #3
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
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 :
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
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 16h43   #4
Invité de passage
 
Inscription : septembre 2007
Messages : 46
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 46
Points : 1
Points : 1
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 :
1
2
3
4
5
6
7
8
 
// Avant la redirection
$_SESSION['mailError'] = .....;
 
// Après la redirection
if ($_SESSION['mailError']) {
   .....
}
Merci

Xavier
xnopre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 16h49   #5
Modérateur
 
Avatar de FirePrawn
 
Homme Sébastien
Ingénieur réalisateur
Inscription : mars 2011
Messages : 772
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 24
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur réalisateur
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 772
Points : 2 329
Points : 2 329
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 :
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.
- avant de poster
- Je ne réponds pas aux questions techniques en MP.
FirePrawn est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 18h16   #6
Invité de passage
 
Inscription : septembre 2007
Messages : 46
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 46
Points : 1
Points : 1
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 :
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 ... ?
xnopre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 12h02   #7
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
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
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 08h58   #8
Invité de passage
 
Inscription : septembre 2007
Messages : 46
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 46
Points : 1
Points : 1
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 :
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
xnopre est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h20.


 
 
 
 
Partenaires

Hébergement Web