Rafraîchir la page dans le navigateur, sans re-présentant le formulaire?
J'ai un formulaire sur une page php qui est soumis à la même page.
J'ai remarqué que si je me rafraîchir la page, le formulaire est soumis de nouveau.
Comment puis-je code pour éviter cela le plus facilement?
Vous pouvez essayer de les rediriger vers une page d'actualisation.
en.wikipedia.org/wiki/Post/Redirect/Get
Vous ne pouvez pas... le fait est que la saisie de l'utilisateur aurait été nécessaire pour générer la page que vous êtes actuellement sur. Je vous suggère de laisser ce problème seul, sauf si vous avez une bonne raison de le changer. Si vous le faites, vous pouvez faire ce Blender suggère, et aller à une page intermédiaire, ou l'envoi de vos données via AJAX avant de passer à la page suivante.
Vous pouvez également générer une chaîne de caractères aléatoires dans un caché d'entrée, le mettre dans un cookie (ou session), vérifier la chaîne correspond à la valeur du cookie et de le détruire lorsque le formulaire est envoyé pour la première fois. Ainsi, si l'utilisateur envoyer les mêmes données que la prochaine fois, la vérification a échoué et vous savez que le formulaire a déjà été envoyé. Mais il nécessite des cookies, donc si vous pouvez simplement rediriger, c'est le meilleur choix.
Vous pouvez utiliser AJAX pour soumettre votre formulaire en mode asynchrone, si vous voulez rester sur la même page. Autre que la plupart des solutions sont brut et vraiment un hack plutôt qu'une réelle solution. La soumission de publier des données sur l'actualisation est normale dans le comportement du navigateur et il y a une raison navigateurs laisser comme cela.
en.wikipedia.org/wiki/Post/Redirect/Get
Vous ne pouvez pas... le fait est que la saisie de l'utilisateur aurait été nécessaire pour générer la page que vous êtes actuellement sur. Je vous suggère de laisser ce problème seul, sauf si vous avez une bonne raison de le changer. Si vous le faites, vous pouvez faire ce Blender suggère, et aller à une page intermédiaire, ou l'envoi de vos données via AJAX avant de passer à la page suivante.
Vous pouvez également générer une chaîne de caractères aléatoires dans un caché d'entrée, le mettre dans un cookie (ou session), vérifier la chaîne correspond à la valeur du cookie et de le détruire lorsque le formulaire est envoyé pour la première fois. Ainsi, si l'utilisateur envoyer les mêmes données que la prochaine fois, la vérification a échoué et vous savez que le formulaire a déjà été envoyé. Mais il nécessite des cookies, donc si vous pouvez simplement rediriger, c'est le meilleur choix.
Vous pouvez utiliser AJAX pour soumettre votre formulaire en mode asynchrone, si vous voulez rester sur la même page. Autre que la plupart des solutions sont brut et vraiment un hack plutôt qu'une réelle solution. La soumission de publier des données sur l'actualisation est normale dans le comportement du navigateur et il y a une raison navigateurs laisser comme cela.
OriginalL'auteur Paul | 2011-11-03
Vous devez vous connecter pour publier un commentaire.
Est une possibilité, pour mettre en œuvre la poste-réacheminement-get approche.
Simplement dit, une requête POST sera jamais livré au navigateur. Au lieu d'exécuter toutes les mesures nécessaires et de stocker les informations dont vous avez besoin dans la session, et puis vous faites une redirection avec le code 303.
Faisant de cette façon, le navigateur affiche l' "show_result.php" la page (une requête GET) au lieu de la page demandée avec la POSTE. C'est aussi la page qui est ajouté à l'histoire, tellement rafraîchissant et en utilisant le bouton retour ne fera jamais un autre POSTE de la demande. Comme un effet secondaire de nice, à vous débarrasser de navigateur avertissements sur le renvoi de données, normalement, l'utilisateur ne peut pas décider quoi faire ensuite, de toute façon.
Je pense que le plus gros problème avec cette approche est que vous avez besoin d'une session pour stocker les messages d'erreur, cela signifie que vous devez compter sur les cookies. Si vous n'avez pas de redirection des erreurs d'affichage, le navigateur affichera le message d'avertissement concernant le renvoi de données.
Post-rediriger-get ne nécessite pas de sessions, et je ne suis pas sûr de ce que tu veux dire par "une requête POST sera jamais livré le navigateur"
Chaque demande sera traitée avec une redirection (code 303). Le navigateur reçoit cette réponse et commence une nouvelle requête GET, ce qui montre le résultat de la première requête. La session est nécessaire lorsque la demande POST détecte pas valide la saisie de l'utilisateur, la demande doit afficher le message d'erreur et la dernière saisie de l'utilisateur.
OriginalL'auteur martinstoeckli
Cette assumer beaucoup de choses, mais peut-être est-ce que vous cherchez:
PHP_SELF
va supprimer toute paramètre GET. UtilisationREQUEST_URI
pour les préserver.OriginalL'auteur Igor Parra
Selon HTTP standard, vous devez faire navigateur pour faire une demande après l'envoi de POSTE.
Voici une esquisse exemple pour faire la forme de la manipulation:
OriginalL'auteur Your Common Sense