9
votes

Empêcher la forme d'être soumis deux fois

J'ai une forme PHP simple, comme ceci:

<?php

if(isset($_POST['myform']))
   // email...
else
   // display form


0 commentaires

4 Réponses :


4
votes

Effectuer une redirection Une fois que les données sont insérées sur une page de confirmation (peut être effectuée avec en-tête () , qui devrait effacer les données post et permettre de rafraîchir sans dupliquer le contenu.


0 commentaires

16
votes

4 commentaires

Ceci est par la voie appelée POST-Redirect-get motif .


Merci. Mais maintenant, j'ai un autre problème :) J'ai ajouté Header ('emplacement: http://www.example.com/?formsent=1'); , et je vérifie $ $ _GET ['Formssent'] Pour afficher un message de réussite. Le problème est que si je rafraîchis la page, je reçois le même message de réussite :)


Et le problème est? ... Je ne vois pas cela comme un problème, car il ne manipule aucune donnée sur la DB.


Parfois, les réponses les plus simples sont les meilleures car la plupart des gens dont moi-même ont tendance à surmonter des questions compliquées. Merci!



2
votes

Dans le cas de l'utilisateur ayant un décalage et il frappe le bouton Soumettre à quelques reprises, puis utilisez le mécanisme latéral client, utilisez JS pour définir le bouton Soumettre pour désactiver une fois que vous cliquez dessus. Mais devra afficher un message disant à peu près quelque chose comme: "Envoi de message ... Si aucune réponse ne rechargne la page et réessayer".


0 commentaires

1
votes
session_start();    
if (!$_SESSION['REQUEST_TYPE_USER_ID'] == $_POST)
{
//your code
//after the success process
    $_SESSION['REQUEST_TYPE_USER_ID'] = $_POST;
}
else
{
// request duplicated
}

1 commentaires

S'il vous plaît donner une explication quant à ce qui se passe dans le code. Le dumping de code est fronçonné ici.