problème de boucle/session : envoi de doublons en nombre variable ?! - PHP - Programmation
Marsh Posté le 20-07-2006 à 15:24:55
au pif (pas regardé le code), tu es sûr que tes utilisateurs ne cliquent pas plusieurs fois sur le lien de validation qui lance ton script?
Marsh Posté le 20-07-2006 à 15:44:21
skeye a écrit : au pif (pas regardé le code), tu es sûr que tes utilisateurs ne cliquent pas plusieurs fois sur le lien de validation qui lance ton script? |
ben non...
je sus en phase de test et c'est moi qui remplis les formulaires et reçoit les mails...
en fait, je viens de faire plein de petits tests :
c'est pas un problème de boucle : j'ai mis divers echo après chaque accolade, pour voir si il y avait répétition.
ben y'a pas de répétition, tous les echos s'affichent une seule fois sur ma page...
en fait, je crois que c'est un problème de session :
j'envoie un premier formulaire après avoir viré le cache et l'historique : envoi normal...pas de problème...
je retape l'url de connexion, 2ème envoi avec le même pseudo et du coup j'ai les nouvelles données en double...
si entre temps, je me suis connecté avec un autre pseudo pour répondre à la première demande, la seconde demande n'aura pas de problème...
arf je sais pas si je suis clair!
en gros : pseudo1 ->envoi1 ->pas de doublons
pseudo1 ->envoi2 -> doublons
pseudo1 ->envoi1->pas de doublons
pseudo2->reponse1->ok
pseudo1->envoi2->pas de doublons
Pourtant, je fais un session_destroy() après l'envoi des mails...
dans le cadre d'une utilisation normale ça devrait ptet passer, mais c'est pas stable...
si la même personne fait 2 demandes différentes à la suite c'est la merde...
enfin merci skeye d'avoir répondu, me sentait un peu seul lol
Marsh Posté le 20-07-2006 à 15:48:08
Toujours pas lu le code, mais en effet après insertion des données censées être uniques il serait p-e bien de virer les données de la session, ou de mettre à jour un marqueur qui dit que l'insertion est faite...ne serait-ce que pour éviter de réinsérer dans la base sur un refresh du navigateur!
Marsh Posté le 20-07-2006 à 15:52:04
ok merci...
je pensais qu'un session_destroy(); suffisait à supprimer les données de session...ce qui doit être le cas, mais bon...
justement, le destroy marche bien, quand je refresh toutes les variables de session sont indéfinies...
vais essayer de bidouiller mon code avec l'histoire du marqueur..
Marsh Posté le 20-07-2006 à 15:54:13
ah ben oui si tu fais un destroy de toute la session ya plus rien!
Marsh Posté le 20-07-2006 à 15:56:23
skeye a écrit : ah ben oui si tu fais un destroy de toute la session ya plus rien! |
donc : y'a pas de raison d'avoir des doublons
on est d'accord skeye...
mais le destroy est là depuis le départ, ça n'empeche pas mon code de m****** en beauté
Marsh Posté le 20-07-2006 à 15:59:30
flock86 > T'es sur que tes utilisateurs ne sont pas du type "double clic et + si lenteur"?
De plus, t'es sur qu'une partie des données en question n'es pas rechargé quand le client passe dans une autre page?
Marsh Posté le 20-07-2006 à 16:11:19
omega2 a écrit : flock86 > T'es sur que tes utilisateurs ne sont pas du type "double clic et + si lenteur"? |
merci de ta réponse omega 2 :
alors, le "double clic et + si lenteur" c'est pas mon genre...suis seul sur ce coup là, je teste pour l'instant
donc ça vient pas de là.
par "sécurité" j'ai déplacé ma requete sql et mes envois de mail sur une autre page et je fais une redirection automatique vers la page d'accueil du site, sans envoi de données ni par get, session, ou post (pas de conexion de session à la page d'accueil) . les données ne sont donc pas (logiquement) rechargées.
l'insertion des données et les mails sont envoyés direct en doublons.
comme dirait M. Cyclopède :"étonnant non?"
Marsh Posté le 20-07-2006 à 16:13:36
C'est quoi le navigateur que t'utilise? T'apelle la méthode avec xmlhttprequest ou directement à l'aide d'un formulaire classique?
Il me semble avoir entendu parlé d'un cas où un navigateur envoyé deux fois la demande d'une page mais je ne me rapelle plus lequel ni dans quel cas.
C'est une piste à vérifier dans les logs du serveur web.
Marsh Posté le 20-07-2006 à 16:20:07
arf!
ben tu vois je l'aurais jamais trouvé ce truc là...
navigateur : IE 6 (j'ai honte mais pas le choix, imposé sur tous les postes)
et la méthode via le formulaire..
merci pour l'info en tous les cas!
vais essayer avec firefox et opéra, on verra bien déjà.
AAAAAAAAAAAARG!!
ça marche nickel avec firefox!
Saloperie d'IE!!
déjà que je l'aime pas dès le départ s'uilà!
mais bon, c'est pas une excuse! ça doit fonctionner sur tous les navigateurs...
ben merci omega2, j'ai pas ma solution, mais au moins, je sais d'où ça vient!
et...j'imagine que c'est pas paramétrable ct' histoire d'envoi en double!
et merci skeye aussi!
m'enfin, un système de formulaire/session sur IE, on va pas me faire croire que c'est pas monnaie courante.
c'est pas la mort mon truc non plus.
1 formulaire, 2 mails 1bdd...
mais pas de boucle foireuse apparemment...
je vais essayer de m'affranchir des sessions, au moins pour l'envoi des mails et l'insertion dans la base.
(vais pas envoyer des formulaires cachés à tout bout de champ non plus!)
Marsh Posté le 20-07-2006 à 13:44:49
Salut à tous!
voilà, j'ai un problème depuis plusieurs jours, et je m'arrache les cheveux!!
j'ai créé un formulaire, accessible via un système de session, et les infos sont stockées dans une bdd. une fois l'enregistrement effectué, il ya un système d'envoi automatique de mail au demandeur et à une autre personne.
mon problème est le suivant :
une fois mon formulaire rempli, il arrive que les données et les mails soient envoyés en 1 exemplaire (c'est ce que je souhaite à la base), mais il arrive aussi que ces événement surviennent 2 voire 3 fois d'affilée! o_O ce qui généère des doublons dans la base et les boites mails.
ça doit venir d'un problème de boucle, mais j'arrive pas à trouver...
ce qui m'interpelle d'autant plus, c'est le nombre variable d'envoi et d'insertion dans la base.
que ça se fasse 1, 2 ou 3 fois, je comprendrais si le nombre était constant, mais ça varie!!!
il ya une page de connexion donc, et derrière la page de formulaire que voici (désolé il est long!!) :
Si qq'un peut me filer un coup de main, je vois vraiment pas mon erreur...
merci!!
[EDIT] : bon j'ai raccourci mon code, pour pas vous décourager de lire mon post, je vous fais grâce de ma partie html, elle n'est pas la cause de mon problème de toutes façons...
Message édité par flock86 le 20-07-2006 à 15:46:24