Vérifier si la page est un refresh

Florynth Messages postés 48 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 7 février 2008 - 1 août 2006 à 02:46
Florynth Messages postés 48 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 7 février 2008 - 1 août 2006 à 04:41
Bonjour,

lorsqu'un formulaire est envoyé une entré est faites dans une base de donnés. Je veux évité que si un refresh/réactualiser est fait que l'insertion se fasse de nouveau. Comment puis-je vérifié si la page est le fruit d'un refresh pour évité que l'entré se fache une deuxième fois.

Florynth

11 réponses

Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
1 août 2006 à 03:11
Salut,
eh bien tu peux regarder dans la base si la même entrée existe déjà (logique, non ?)
tu peux utiliser COUNT(*) sous SQL. et si count te renvoie 0 tu fais insert.

Il y a d'autres solutions mais dis-voir si celle-là ne suffirait pas.
à+
0
Florynth Messages postés 48 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 7 février 2008
1 août 2006 à 03:15
C'est une solution mais je dois en avoir une qui s'applique dans tout les cas. Si c'est un update aussi, ou si cest une page qui appel une commande (serveur de paiment) je veux être sûr de ne pas appelé la commande deux fois...

Florynth
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
1 août 2006 à 03:47
Alors quand ton script a fini d'être exécuté la première fois, tu crées une variable de session X. Et le script ne s'exécute que si la variable X n'existe pas.
à+
0
Florynth Messages postés 48 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 7 février 2008
1 août 2006 à 03:53
Il y a pas d'autre solution, car ça risque d'être compliqué car un script peu être exécuté plus d'une fois par session mais je ne veux pas qu'il soit exécuté si c'est fait par un refresh uniquement... Il reste la possibilité de stocker dans les paramètres un identifiant unique de request et s'assurer que la request n'a pas été déjà exécuté mais bon ça peu venir gros rapidement si exemple quelqu'un fait l'administration de ses catégories et produits pour un gestionnaire de boutique virtuel...


Rien d'autre ?

Florynth
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
1 août 2006 à 04:09
Rien d'autre ? lol
mais si, suffit de réfléchir un peu.
Tu n'as qu'à donner un id unique au début de chaque transaction avec les sessions.
Exemple : je dis "je veux ajouter un produit", le site me dit "ok, autorisation numéro 125".
Moi j'ajoute mon produit et à la fin de la transaction, le site dit "autorisation 125 expirée". Et si je fais un simple refresh, ça ne marchera pas, parce que le site aura mis la valeur "expirée" à la variable de session 125.
Faudra donc repasser par l'étape "demander une autorisation" pour ajouter un autre produit.
j'ai été clair ?
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
1 août 2006 à 04:13
Houlà excuse je suis fatigué, j'ai mal lu ce que tu avais écrit, qui semble bien vouloir dire exactement ce que j'ai mis...
Oui bah en tt cas ça me parait être la vraie solution.
Si tu veux une solution sale, après la transaction, tu renvoies sur une page qui redirige elle-même immédiatement sur une autre page. En gros c'est plus difficile de faire précédent et de retomber sur ta page. Mais bon...
0
Florynth Messages postés 48 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 7 février 2008
1 août 2006 à 04:13
Oui en fait c'est ce que je pensais... mais moi je pensais à l'éventualité que dans la même session il y ait environs 200 transactions... ça fait pas beaucoup d'information inutile à stocké ? Si il y a avait un tag sur la page (je crois qu'en .net il y en n'a) pour savoir si la page est un refresh ou non ?

Florynth
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
1 août 2006 à 04:23
200 variables c'est pas la mort, surtout si tu destroy bien la session avant l'unset et que tu mets la limite d'expiration... là comme ça je vois pas de meilleure solution dans l'immédiat mais je suis un peu crevé, faudrait voir demain...
Pour le tag je crois pas que ça existe, et de tte façon c'est une solution qui reposerait sur le navigateur du client, c'est pas génial... et t'as cherché du côté du cache? ya peut-être qqch, mais pour autant que je sache, on ne peut pas effacer du navigateur les variables post ou get de 3mn avant... malheureusement
0
Florynth Messages postés 48 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 7 février 2008
1 août 2006 à 04:28
Bon dernière question... je vais opté pour les variables sessions... mais je veux être bien sur de bien détruire la session...

Si l'utilisateur ferme son browser est-ce que la session ce détruit automatiquement ?

Moi ce que j'ai fait c'est une petite classe qui stock l'heure de création de la session et un délai d'expiration, à chaque fois que je fait new Session un test et fait avec l'heure et le délai, si c'est expiré je fais un unset destroy, si ce n'est pas le cas je réinitialise l'heure...

Mais je veux juste m'assurer que les sessions se détruises automatiquement si l'utilisateur se déconnecte...

Florynth
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
1 août 2006 à 04:37
la session est perdue par l'utilisateur mais pas détruite je crois, elle n'est détruite que lorsqu'elle expire (configuration du php.ini), 20 mn par défaut. Mais faut se méfier, je connais des sessions chez Free qui dure plus de 24h alors que le phpinfo affiche que c'est 20mn... va comprendre.
0
Florynth Messages postés 48 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 7 février 2008
1 août 2006 à 04:41
Oui, j'avais remarqué ce problème... pas chez Free mais partout... tant que l'utilisateur est connecté la session reste active c'est pour ça que j'ai fait cette petite classe comme ça je gère moi même la duré...

Donc si du côté serveur ça s'efface après 20 minutes (par défaut) ben au moins j'ai pas besoin de m'occuper de ça

Bonne nuit ;O)

Florynth
0
Rejoignez-nous