Par exemple, je pose cette question et clique sur "Poster ta question" et reste dans la page actuelle. Maintenant, je peux cliquer sur le bouton "Actualiser" de mon navigateur pour voir de nouvelles réponses. Mais je trouve que sur mon site web, si je clique sur le bouton "Actualiser", une question dupliquée sera publiée. Comment éviter ce problème? J'utilise PHP.Comment éviter les doublons lorsqu'un utilisateur clique sur le bouton "Actualiser" de son navigateur?
Répondre
Il est de pratique courante après une demande POST
de rediriger vers la même page pour éviter ce problème.
Disons que vous êtes sur /ask_question.php
Votre balise d'ouverture <form>
pourrait ressembler à ceci:
<form action="/ask_question.php" method="post">
Maintenant, dans votre /ask_question.php
faire quelque chose comme ceci:
if(isset($_POST['new-question'])){
// Do your processing here
// On success:
header('Location: /ask_question.php');
exit(); // End the request
}
Mise à jourIl est important de rediriger seulement après un valide $_POST
demande a été traitée. Je test pour un champ de formulaire nommé new-question
mais vous devez utiliser toute forme nom de champ qui doit être présent pour le $_POST
pour réussir
Ce processus de leurs données affichées, puis en cas de succès, redirige vers la même page. La seule différence maintenant, c'est que quand ils cliquent sur refresh, aucune information ne sera postée.
Remarque Assurez-vous que rien n'est echo
'sorti avant l'appel header
.
Battez-moi. =) –
@Alix haha. Cependant, je suis trop verbeux. Votre réponse est beaucoup plus courte et communique probablement mieux la réponse :) –
@Doug: La verbosité est bonne. =) –
Tout d'abord, utilisez POST pour votre formulaire. Presque tous les navigateurs demanderont à l'utilisateur de confirmer lors de l'actualisation d'un résultat de formulaire POSTed, puisqu'il doit le soumettre à nouveau. Deuxièmement, dans votre script de traitement de formulaire, vérifiez si la question existe déjà - ou définissez une session pour l'utilisateur et gardez la trace de s'il a récemment soumis quelque chose.
Mais mon navigateur (Firefox) ne me demande pas de confirmer. – Steven
Ensuite, votre navigateur a un bug. Ça marche pour moi. –
Soumettre le formulaire en utilisant POST, à valider la soumission et si tout va bien redirigent l'utilisateur à une page de succès, de cette façon si l'utilisateur actualise la page tout ce qu'il va faire est de voir la page « merci » à nouveau .
- 1. Comment éviter les événements bouton sur Actualiser de la page
- 2. modèles Django éviter les doublons
- 3. Comment éviter les doublons?
- 4. Comment puis-je rediriger le navigateur lorsqu'un utilisateur clique sur un bouton?
- 5. Lorsque je clique sur le bouton Actualiser sur IE mon javascript se refresh -Comment l'arrêter
- 6. éviter les doublons de tableau
- 7. Comment éviter le scintillement sur le bouton de retour du navigateur
- 8. ASP.NET répéteur - comment actualiser les données sur le bouton soumettre
- 9. Comment éviter les doublons dans une énumération?
- 10. Lucene AddIndexes (fusionner) - comment éviter les doublons?
- 11. Je veux arrêter la demande du navigateur, lorsque l'utilisateur clique sur un bouton de l'interface utilisateur, comme bouton d'arrêt sur le navigateur
- 12. Comment éviter les doublons dans le projet django?
- 13. div actualiser sans clic sur le bouton
- 14. Comment éviter la restauration des enregistrements lorsque l'on clique sur le bouton de pagination sur le radgrid
- 15. Comment déclencher le son à chaque fois qu'un utilisateur clique sur un élément
- 16. Comment conserver les données de formulaire lorsque l'utilisateur clique sur le bouton Précédent
- 17. Actualiser la page du bouton Chrome - ASP.net
- 18. Le bouton "Précédent" du navigateur permet d'enregistrer les détails.
- 19. Actualiser le bouton sur une vue Rails
- 20. Actualiser le contrôle utilisateur sans actualiser la page
- 21. S'il y a un bouton dans un lien, quand je clique sur ce bouton, comment éviter le lien?
- 22. Comment actualiser le navigateur toutes les X secondes avec javascript?
- 23. Comment éviter les doublons de courriels dans un formulaire (bulletin)
- 24. Comment éviter les doublons de module avec MEF?
- 25. ASP.NET: éviter RequiredFieldValidator sur le bouton de navigation de publication
- 26. Gestion de l'historique (bouton Actualiser)
- 27. Actualiser le contenu de l'onglet sur le clic dans les onglets de l'interface utilisateur JQuery
- 28. Comment puis-je éviter de cliquer sur le bouton OK
- 29. Pour éviter l'insertion sur Refresh
- 30. Quels sont les en-têtes HTTP nécessaires pour actualiser une page sur le bouton de retour
Comment déterminer si des données ont été soumises? – Steven
Comment stackoverflow.com évite/s'attaque à ce problème? – Steven