8791 sujets

Développement web côté serveur, CMS

Bonjour tout le monde,

Désolé pour le titre mais je ne savais pas comment être plus explicite.


J'ai créé un formulaire tout simple de contact, mais j'ai un petit problème c'est que une fois le formulaire validé et envoyé, si on refresh la page (F5) et bien mes variables POST sont gardés et cela renvoie encore un mail.

J'aimerais savoir si il existait une solution simple et efficace pour éviter cela ?
J'ai essayé avec un unset($_POST); mais ca ne marche pas.

J'ai cru comprendre qu'on ne pouvait pas toucher au variable globale si j'ai bien compris ^^


En espérant avoir été clair,
je vous remercie d'avance Smiley smile

edit: je ne sais pas si c'est important mais quand je fais F5 j'ai un message (de chrome) qui me demande "confirmer le nouvel en voir du formulaire" je ne sais pas si c'est normal
Modifié par Fabious (30 Jan 2012 - 13:45)
Quand tu valides un formulaire, après la validation, tu fais un

header('location:http://www.url.com');


tu le rediriges sur une page précisant que le formulaire a été envoyé (ou la même page, avec un paramètre permettant de préciser que l'envoi est ok).

De cette manière, si il fait F5, il ne renvoi pas le formulaire vu qu'il est sur une nouvelle page. C'est grosso modo, ce que tout le monde fait.
Ok merci beaucoup pour ta réponse cela marche très bien,

Mais une petite question dû à cette technique (désolé si je t'embête ^^)

En utilisant cela je ne peux pas faire un message sur la page du genre "mail envoyé avec succès" ?


edit : peut être en transmettant une variable dans l'url et la récupérer avec un GET ?
Modifié par Fabious (30 Jan 2012 - 13:30)
Fabious a écrit :

edit : peut être en transmettant une variable dans l'url et la récupérer avec un GET ?


Exactement oui. Perso j'utilise les session mais ça marche également avec les paramètres en get

header('location:/dossier/fichier.php?valide=ok');
Ok merci ! Smiley smile

Je vais essayer avec les sessions si c'est trop compliqué je ferais en GET en attendant que le dév arrive pour m'expliquer xD

:)


edit: c'est bon j'ai réussi avec session ca marche nickel merci !
Modifié par Fabious (30 Jan 2012 - 13:53)