bonjour,
j'ai une question est-il possible de supprimer les variables d'un formulaire contenu en post pour éviter la revalidation d'un formulaire à la suite d'une actualisation.
merci de votre aide.
bonjour,
j'ai une question est-il possible de supprimer les variables d'un formulaire contenu en post pour éviter la revalidation d'un formulaire à la suite d'une actualisation.
merci de votre aide.
c'est possible mais c'est pas bien propre .
Sur la page qui accueil les données en post tu crée une variable session , disons $SESSION["isDonneeDejaRecues"] = true;
Lors du premier accès la variable passe a true , si l'utilisateur fait un refresh tu peux verifier qu'il est pas deja venu sur ladite page comme suit :
ainsi tu efface les données post avant de faire ton traitement , sachant qu'il ne faut pas oublier de traiter a la suite le cas ou le tableau POST est vide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 if (isset( $SESSION["isDonneeDejaRecues"]) && $SESSION["isDonneeDejaRecues"] === true){ unset($_POST); } else { $SESSION["isDonneeDejaRecues"] = true; }
C'est une solution.
ok ça vide les variables contenu en $_POST par contre ça ne règle pas le problème de spam en actualisant la page, le navigateur execute à nouveau le formulaire.
j'ai pensé à mettre un captcha, mais j'aurais voulu savoir s'il n'y a pas une autre solution =)
merci de votre aide.
Il faudrait quelque chose du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 if(isset($_POST[...])){ // Traitement de tes données POST // ici header('Location: page.php'); die(); }
Non on ne vide jamais les variables $post car c'est le navigateur qui les posséde dans son cache et les renverra si F5 !
La solution de RideKick est bien la bonne mais il faut la durcir un peut
toujours par les sessions
voici un exemple type que j'avais écrit. Qui régle un probléme de retour en cas d'erreurs...
1) saisie
saisie, mais rempli les zones déjas saisies et si besoins affiche erreur
2) controle et anti F5
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 <?PHP session_start(); if (!isset($_SESSION['nom'])) {$_SESSION['nom']="";$nom="";} else {$nom=$_SESSION['nom'];} if (!isset($_SESSION['prenom'])) {$_SESSION['prenom']="";$prenom="";} else {$prenom=$_SESSION['prenom'];} if (!isset($_SESSION['email'])) {$_SESSION['email']="";$email="";} else {$email=$_SESSION['email'];} if (!isset($_SESSION['err'])) {$_SESSION['err']="";$err="";} else {$err=$_SESSION['err'];} ?> <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'> <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <style type="text/css"> body { background-color: #EFEFF1; } body,td,th { font-size: 14px; font-family: Georgia, Times New Roman, Times, serif; } div.cent {width: 900px;margin : auto;text-align:center;} </style> </head> <body> <div class="cent"> <?PHP echo("<br />".$err."<br />"); ?> <form action="formtraite.php" method="post"> NOM <?PHP echo("<input name='Nom' type='text' value='".$nom."' /><br />"); ?> Prenom :<?PHP echo("<input name='Prenom' type='text' value='".$prenom."' /><br />"); ?> EMail :<?PHP echo("<input name='Mail' type='text' value='".$email."' /><br />"); ?> <br /> <input name="Envoie" type="submit" value="Envoyer" /> </form> </div> </body> </html>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 <?php session_start(); if (!isset($_SESSION['err'])) {$_SESSION['err']="";$err="";} else {$err=$_SESSION['err'];} if(isset($_POST['Nom'])) $nom=$_POST['Nom']; else $nom=""; $_SESSION['nom']=$nom; if(isset($_POST['Prenom'])) $prenom=$_POST['Prenom']; else $prenom=""; $_SESSION['prenom']=$prenom; if(isset($_POST['Mail'])) $email=$_POST['Mail']; else $email=""; $_SESSION['email']=$email; if($nom=="" || $prenom=="" || $email=="") { $_SESSION['err']="Remplissez toutes les zones"; header('Location: form.php'); exit; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <?PHP //==============anti F5 ===================== if (!isset($_SESSION['ok'])) {$_SESSION['ok']="";$ok="";} else {$ok=$_SESSION['ok'];} if($ok!="ok") { echo ("Vous avez saisi <br /> 1 ".$nom." 2 ".$prenom." 3 ".$email."<br />xx"); print_r($_POST); $_SESSION['ok']="ok";$ok="ok"; } ?> </body> </html>
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager