|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
Bonjour
Bon voilà, quand un visiteur valide le formulaire d'inscription il est expédié sur une page qui insère les données dans la base. Si le troufion a l'idée de faire retour avec le navigateur et revalide en moins de 20 sec il est bloqué. Au lieu de revalider il peut choisir de modifier les informations du formulaire qu'il venait de remplir et qui se réaffichent automatiquement puisque conservées par le cache du navigateur. Là il est stoppé parce qu'il y a désormais un doublon. Par contre dans ce cas de figure, les mots de passes sont conservés. Si le gars change le pseudo et l'email et revalide il va créer un nouveau compte avec un passe identique au précédent, sans même avoir eu à le réécrire. Ce n'est pas normal, surtout que dans ce cas de figure il n'a pas revalidé les conditions d'utilisation. Le cas ne devrait pas se produire, mais c'est tout de même à corriger. Vous avez tout compris hein ? Donc, puis-je effacer les champs des formulaires (hidden) qui recontiennent automatiquement les valeurs du formulaire qui vient d'être validé, si jamais on fait retour avec le navigateur ? |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 126 ![]() |
le plus simple c'est de faire une seule page post.php, et dedans tu mets des headers.
je m'explique : - tu es sur la page post.php, et tu clique sur envoyer - des variables de $_POST sont envoyées à post.php - le script les traitent et après fait un header (redirection) sur post.php moralité : le client ne voit rien, et si il fait précédent retour ou actualiser les variables $_POST ont disparues.
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
|
|
00
|
|
|
#3 |
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
Mon problème :
Le gars est sur la page de formulaire A. Il valide. Il arrive sur la page d'insertion B qui envoit les données dans la base. Ici, si il fait retour il se retrouve sur A et si il revalide, revient sur B qui réexpédie tout dans la base, ce qui est mon problème. Donc tu proposes : Le gars est sur la page de formulaire A. Il valide. Il arrive sur la page d'insertion B qui envoit les données dans la base. Là un header recharge B au bout d'une seconde. Du même coup les données ont disparu. Le gars peut toujours faire retour, il ne se passe rien. J'ai bon? Mais pourtant les données du formulaire seront toujours présente dans le cache et vont remplir directement les champs du formulaire, il me semble. On m'a conseillé de tester le referer : si il correspond à la page B, je vide le formulaire en initialisant les values avec ' ' . C'est bon ça ? J'essaierai bien tout de suite mais j'ai mon bain qui coule. Je reviens vous dire si ça fonctionne dès que j'ai essayé, merci. |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Inscription : juillet 2004 Messages : 1 033 ![]() |
Peut être que tu peux regarder du coté de REPLACE INTO au lieu de INSERT INTO.
|
|
|
00
|
|
|
#5 | |
![]() ![]() Inscription : juin 2003 Messages : 4 893 ![]() |
petite correction à ce que tu propose :
Citation:
__________________
Modérateur PHP |
|
|
|
00
|
|
|
#6 | ||
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
Merci pour vos réponses.Avant de voir, pour le header, j'ai essayé cela :
Le visiteur valide un formulaire et arrive sur la page qui confirme l'enregistrement. Cette page insère les données dans la base. Après le script d'insertion j'initialise une variable de session comme suit : Le but est que si le gars utilise fait un retour avec le navigateur, la page précédente n'affiche plus le formulaire tel qu'il était mais les conditions d'inscription. Pour cela je fais comme suit: Code :
!isset($_SESSION[$antiMarcheArriere]) Pour le test, alors c'est pareil. Donc ? Pourquoi ma variable de session n'est pas transmise à la page précédente lorsque l'on fait un retour du navigateur ? |
||
|
|
00
|
|
|
#7 | |
![]() ![]() Inscription : juin 2003 Messages : 4 893 ![]() |
Citation:
à remplacer par ça :
__________________
Modérateur PHP |
|
|
|
00
|
|
|
#8 | ||
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
Bon alors en effet il y avait cette erreur
Je viens donc de la corriger et c'est bizarre, maintenant si je fais un retour depuis la page d'insertion, au lieu d'avoir le script de confirmation des CGU qui s'affiche (si tout se passait bien), ou comme avant le script de confirmation qui pose problème, maintenant j'obtiens une erreur du navigateur : Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com