e.MiLoU Posté 2 Novembre 2005 Posté 2 Novembre 2005 Bonjour, Je voudrais connaître le moyen qui est utilisé pour éviter le double post... J'entends pas là que lorsque quelqu'un a ajouté un message et puis qu'il rafraichit la page, les données sont de nouveau envoyées... Commet faire pour éviter cela?? Merci d'avance.
Compte supprimé Posté 2 Novembre 2005 Posté 2 Novembre 2005 Il faut faire une redirection vers une autre page dès que tu as traité le formulaire. Perso tous mes formulaires sont construits pareil : <?phpif (isset($_POST[form])){... traitement... redirection vers la même page}?>... formulaire html qui pointe sur la même page Avantages : - si le formulaire n'a pas été rempli corrrectement, les variables sont disponibles pour les réaficher dans les champs. - une page formulaire/traitement (plus simple à maintenir). - refresh inactif. a+
e.MiLoU Posté 3 Novembre 2005 Auteur Posté 3 Novembre 2005 J'avoue que le principe est génial... Je teste ça tout de suite
e.MiLoU Posté 3 Novembre 2005 Auteur Posté 3 Novembre 2005 Ca ne fonctionne pas... Une fois mon formulaire envoyé et ma redirection faite du type: header(location: http://...) si j'appuye sur rafraichir, il m'ajoute de nouveau mon entrée... Je crois que le problème vient de ma direction. Laquelle utilises-tu?? Merci
NorSeb Posté 3 Novembre 2005 Posté 3 Novembre 2005 Salut, Ca ne fonctionne pas... Une fois mon formulaire envoyé et ma redirection faite du type: header(location: http://...) si j'appuye sur rafraichir, il m'ajoute de nouveau mon entrée... Je crois que le problème vient de ma direction. Laquelle utilises-tu?? Si, lorsque tu rafraichis ca rajoute une entrée, cela veut dire que tu est encore sur la page qui enregistre dans la base de données. (tu m'arrète si je me trompe ) Or, la solution proposée par Jeroen consiste à rediriger (après l'enregistrement) sur une une page différente, ne contenant pas le script d'enregistrement. Dans les grandes lignes tu dois avoir : une page contenant ton formulaire (par exemple : formulaire.php) qui lors de la soumission envoi sur un script d'enregistrement (record.php). Lequel script, redirige vers une page de confirmation : "l'enregistrement s'est bien passé" (confirmation.php).
e.MiLoU Posté 3 Novembre 2005 Auteur Posté 3 Novembre 2005 (modifié) En fait, le but, c'est que après la redirection, il ne renvoie plus les POST... Mais c'est un problème... Parce que ça ne fonctionne pas. (Ou alors, j'ai pas tout compris...) Je vais attendre la réponse de Jeroen pour voir quelle redirection il utilise, aussinon, je fais comme tu as dit . EDIT: Je crois que je vais faire comme tu as dit, ça marche impec Modifié 3 Novembre 2005 par e.MiLoU
adn Posté 3 Novembre 2005 Posté 3 Novembre 2005 Salut, Pourquoi rediriger ? Perso je vide l'ensemble des variables utilisées après l'envoi du mail et donc compte-tenu du test qui est fait en amont sur la validité des champs, çà ne peut pas repartir.
e.MiLoU Posté 3 Novembre 2005 Auteur Posté 3 Novembre 2005 (modifié) Tu vides ou tu supprimes les variables?? Comment peux-tu vider alors que c'est le Navigateur qui envoies les données? Peux-tu donner un exemple? Modifié 3 Novembre 2005 par e.MiLoU
Compte supprimé Posté 3 Novembre 2005 Posté 3 Novembre 2005 Je renvoie bien sur la même page via un header en php header ("location:mapage.html");exit; Et je t'affirme que ça marche nickel.
e.MiLoU Posté 3 Novembre 2005 Auteur Posté 3 Novembre 2005 En effet, ça fonctionne impec... J'avais pas mis le exit();
NorSeb Posté 3 Novembre 2005 Posté 3 Novembre 2005 Je renvoie bien sur la même page via un header en php header ("location:mapage.html");exit; Et je t'affirme que ça marche nickel. <{POST_SNAPBACK}> Au temps pour moi ... Je confirme que cette méthode marche aussi
RoRtO Posté 8 Février 2006 Posté 8 Février 2006 Je fais remonter ce post. C'est pour dire que ça marche tellement bien chez moi que non seulement le flood n'est plus possible, mais poster un message normalement ne l'est plus aussi. J'ai du faire un erreur quelquepart... Enfin normal quoi, je suis encore débutant. Voilà mon code : <? if (isset($_POST[form])) // c'est à cause du form hein ? je le remplace par quoi ?{ if (isset($_POST['pseudo']) AND isset($_POST['message'])) // Si les variables existent { if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a vraiment quelque chose à enregistrer { mysql_connect("localhost", "base", "mdp"); mysql_select_db("base"); $message = htmlentities ($_POST['message']); $pseudo = htmlentities ($_POST['pseudo']); $ip = $_SERVER['REMOTE_ADDR']; $timestamp = time(); mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message' , '$ip', '$timestamp')"); mysql_close(); } }header ("location: http://.../8.php");exit;} Voilà, si vous trouvez quelquechose, moi je comprend pas trop le principe de l'anti-flood que j'ai intégré, c'est surement pour ça...
Compte supprimé Posté 8 Février 2006 Posté 8 Février 2006 Trés compiqué tout ça... Si les variables existent attention a ne pas confondre "existent" et "non nulles" a partir du mement ou tu soumet, les variables sont renvoyées, donc elles existent. Pour tester le non nul, il faut faire utiliser la fonction empty(); ferais donc ça : if (isset($_POST['pseudo'])) // défini quand le formulaire est soumis, même s'il est nul{if (!empty($_POST['pseudo']) AND !empty($_POST['message'])) // Si les variables existent{... je traite...+redirection}else {...gestion du message d'alerte...}}...affichage du formulaire
MarvinLeRouge Posté 9 Février 2006 Posté 9 Février 2006 Trés compiqué tout ça... attention a ne pas confondre "existent" et "non nulles" a partir du mement ou tu soumet, les variables sont renvoyées, donc elles existent. ... <{POST_SNAPBACK}> Je mettrais un très léger bémol : certains types de champs ne sont pas nécessairement envoyés lors de la soumission d'un formulaire : les checkbox. S'ils ne sont pas cochés, ils ne sont pas envoyés.
etouelle Posté 23 Juin 2006 Posté 23 Juin 2006 (modifié) Tout marche nickel, mon seul problème est que je n'arrive pas a afficher un message de confirmation de la réussite de l'ajout d'info dans BD sur la même page que le formulaire. C'est normal puisque les variables sont réinitialisées par la redirection sur la même page. Mais comment faire alors ?? ------------------------ Désolé trompé de bouton... Modifié 23 Juin 2006 par etouelle
Compte supprimé Posté 24 Juin 2006 Posté 24 Juin 2006 tu redirige vers formulaire.php?soumission=ok et tu teste la variable $_GET['soumission'] en début de script
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant