Annuler la publication des variables après la soumission du formulaire
Est-il un moyen de le faire ci-dessus? En gros, je ne veux pas le formulaire pour être soumis à nouveau si quelqu'un appuie sur l'actualisation après l'avoir déjà fait de la soumission du formulaire une fois. Auquel cas, le navigateur demande, voulez-vous de les soumettre à nouveau le formulaire. Va unset($_POST['username'])
être d'aucun secours, est-ce le cas?
source d'informationauteur roopunk
Vous devez vous connecter pour publier un commentaire.
La poste/redirect/get est une bonne option, car certaines affiches ont déjà mentionné.
Un autre moyen que je peux penser à est de définir une session dans le dostuff.php page pour indiquer que le message a déjà été fait. Cochez cette session var à chaque fois pour voir si la page est en cours de chargement à nouveau en raison d'une actualisation de la page.
Dans la page que vous rediriger vers, annuler la session var ainsi que le formulaire peut être soumis à nouveau à nouveau à nouveau, après l'opération. Cela permettra à nouveau formulaire de postes, mais permettra d'éviter les opérations de poste en raison de rafraichissement de la page
Utiliser une page intermédiaire pour effectuer les opérations, et ensuite rediriger.
Par exemple:
mypage.php --> la page avec le formulaire
dostuff.php --> reçoit les données du formulaire et les opérations, puis redirige vers une autre page.
De faire une redirection:
Mettre cette ligne en haut de l' "dostuff.php":
header("Location: mypage.php");
Utiliser ce code
Le problème auquel vous êtes confronté ci-dessus peuvent (et devraient) être résolu avec Post/Redirect/Get. La suppression de
_POST
sur le php côté serait inefficace puisque le problème est que c'est une demande distincte.Vous avez également à traiter avec un double-clic de la soumission des boutons. Vous pouvez résoudre ce côté client par la désactivation de la soumission d'un formulaire après que le bouton de la souris, ou en plaçant un jeton aléatoire dans la forme et le stockage de ce jeton dans la session. Le jeton sera accepté qu'une seule fois (session garde une trace de savoir si le jeton a été posté).
Voici une belle méthode que j'utilise pour empêcher des utilisateurs de soumettre deux fois les mêmes données, ce qui permettra également d'éviter la page de l'ajout de l'enregistrement pour la base de données lors de la recharger.
La première
IF
vérifie pour voir si le$_POST
est égale à la dernière chose qu'ils ont saisies ($_SESSION
). Si c'est pas le même, il exécute la prochaineIF
pour tester si le$_POST
variable n'est pas vide. L'intérieur de la dernièreIF
vers le bas il définit$_SESSION['dup_comment_body']
à l'égalité de la$_POST
. La prochaine fois que le premierIF
s'exécute et le$_POST
est le même, ils vont faire passer le message "Vous avez déjà entré.". Espérons que cette aide!Ma solution pour cela est de faire un meta refresh si une variable post est de définir le $_POST ne pas le suivre après l'actualisation.
Vous avez besoin d'utiliser la POSTE/REDIRECT/GET motif pour cela.
Au lieu de cela, vous pouvez utiliser un captcha comme Recaptcha qui ne permet pas de post de présentation sans faire le captcha. C'est ce que j'ai utilisé et il fonctionne parfaitement.