|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre éclairé
![]() Chef de projet MOA Inscription : décembre 2004 Messages : 561 ![]() |
Bonjour,
J'ai un petit problème avec mes sessions... Mon site fonctionne avec une page d'index permettant une identification par login et password. Une fois l'utilisateur authentifié une session est créée. Tout fonctionne correctement dans 95% des cas...Mais il arrive parfois que 2 fichiers de session concernant le même utilisateur existe. Ce qui fait que quelque soit le lien sur lequel il clic, il est rejeté. Voici le bout de code que j'utilise sur ma page d'index concernant les sessions: Code :
Mon problème vient peut-être de là... Que me conseilleriez-vous pour éviter toute duplication de fichier de session? Merci. |
||
|
|
00
|
|
|
#2 | |
|
Membre expérimenté
![]() Inscription : mai 2002 Messages : 673 ![]() |
Rien a voir avec ta question, mais ça :
Citation:
Ensuite, je ne vois pas le rapport entre le fait qu'un utilisateur ai 2 sessions ouvertes et le fait qu'il ne puisse plus cliquer nul part... Peux tu être plus précis ? |
|
|
|
00
|
|
|
#3 | ||
|
Membre éclairé
![]() Chef de projet MOA Inscription : décembre 2004 Messages : 561 ![]() |
Lorsqu'il y a 2 sessions pour l'utilisateur Toto par exemple:
Lorsque l'utilisateur clic sur un lien vers la page liste.php. Cette page (comme toute les autres) vérifie l'existence de la session avec le code suivant: Code :
Donc s'il y a 2 sessions l'autentification echoue. Je ne sais pas pour quelle raison. Et donc l'utilisateur est renvoyé à la page d'index. En ce qui concerne le code de la page d'index, j'avoue avoir récupérer ce code sans chercher en détails son fonctionnement. Ma préoccupation étant de tuer la session d'un utilisateur qui serait déjà connecté afin d'éviter le problème que j'ai en ce moment à savoir, d'avoir plusieurs sessions pour un utilisateur. |
||
|
|
00
|
|
|
#4 | ||
|
Membre expérimenté
![]() Inscription : mai 2002 Messages : 673 ![]() |
Le morceau de code que tu nous montre ne doit pas poser de problème, même avec 2 sessions ouvertes.
peux tu montrer le code de création de la session ? et il se passe quoi si tu vires ça : Code :
|
||
|
|
00
|
|
|
#5 | |
|
Membre éclairé
![]() Chef de projet MOA Inscription : décembre 2004 Messages : 561 ![]() |
Je ne peux pas retirer cette partie de code pour voir ce qui se passe dans la mesure où mon site web est une application web actuellement en production...
Donc si ça pose des problèmes de connexion je vais me retrouver avec tous les utilisateurs sur le dos... En ce qui concerne la création de la session elle se fait avec ce code: Citation:
|
|
|
|
00
|
|
|
#6 |
|
Membre expérimenté
![]() Inscription : mai 2002 Messages : 673 ![]() |
et il te servent a quoi les cookie ??
|
|
|
00
|
|
|
#7 |
|
Membre éclairé
![]() Chef de projet MOA Inscription : décembre 2004 Messages : 561 ![]() |
Ben...euh... a rien je crois...
;-) |
|
|
00
|
|
|
#8 |
|
Membre expérimenté
![]() Inscription : mai 2002 Messages : 673 ![]() |
Duplique ton index en index2.php si il faut, mais je suis persuadé que les lignes que je t'ai conseillé de virer son en trop (surtout le destroy en fait)
|
|
|
00
|
|
|
#9 |
|
Membre éclairé
![]() Chef de projet MOA Inscription : décembre 2004 Messages : 561 ![]() |
ok je vais essayer. Mais comment faire pour éviter d'avoir 2 sessions pour un même utilisateur?
Ce que je voudrais c'est qu'il ne puisse pas y avoir 2 fichiers de sessions pour le même utilisateur. |
|
|
00
|
|
|
#10 |
|
Membre expérimenté
![]() Inscription : mai 2002 Messages : 673 ![]() |
Je ne crois pas qu'on puisse :
tu n'as aucun moyen de savoir si l'utilisateur n'a pas fermer son explorateur. Le fait de fermer l'explorateur ne detruit pas la session. Si tu pouvais empécher que 2 sessions soient ouvertes sur le meme utilisateur, un utilisateur qui ferme son explorateur ne pourrait plus revenir sur ton site avant que sa session n'y soit détruite par timeout (timeout qui dépend de ta conf)... |
|
|
00
|
|
|
#11 |
|
Membre éclairé
![]() Chef de projet MOA Inscription : décembre 2004 Messages : 561 ![]() |
Je viens de comprendre mon problème (j'ai pas encore la solution):
Si un même utilisateur se connecte à partir de 2 postes différents cela créé 2 sessions. Par contre, s'il se connecte sur 2 fenêtres à partir du même poste, alors la 2eme session créée écrase la première (ou la première est détruite et la 2eme est créée ce qui revient au même) Y' a-t-il donc un moyen pour éviter ça ou pas? Faudrait-il, à chaque connexion, rechercher par exemple l'adresse IP dans les fichier de session pour vérifier si la session existe déjà ou pas et ainsi autoriser ou non la connexion? |
|
|
00
|
|
|
#12 |
|
Membre éclairé
![]() Chef de projet MOA Inscription : décembre 2004 Messages : 561 ![]() |
Petite rectification... à partir du meme poste mais avec des fenetres différentes ça créée de nouvelles sessions... :-(
|
|
|
00
|
|
|
#13 |
|
Membre expérimenté
![]() Inscription : mai 2002 Messages : 673 ![]() |
Je pense que t'es en train de te fourvoyer...
Du meme PC ou pas, ça ne change rien. A la limite, la différence est si au cours de la navigation tu ouvres un lien dans une nouvelle fenetre, ce qui va dupliquer ta session sur 2 fenetres. MAis ouvrir 2 fenetre et te logger sur les 2 fenetres te fera 2 session au meme titre que si tu étais sur 2 PC. Cela pourrait avoir une incidence sur les cookies, mais pas sur les session. De plus, comment tu fais si ton serveur est en ligne et que les 2 PC sont sur le meme reseau local pour différencier leurs IP ? Je ne répondrais plus sans savoir ce que la suppression du session_destroy() fait. EDIT : a 2min pres... |
|
|
00
|
|
|
#14 |
|
Membre éclairé
![]() Chef de projet MOA Inscription : décembre 2004 Messages : 561 ![]() |
Pour répondre à ta question : la suppression du destroy ne change rien...
|
|
|
00
|
|
|
#15 |
|
Membre éclairé
![]() Chef de projet MOA Inscription : décembre 2004 Messages : 561 ![]() |
En ce qui concerne l'architecture dans laquelle je travaille, il s'agit d'un réseau local dans lequel se trouve mon serveur. Tous les pc sont donc en local, de même que le serveur.
|
|
|
00
|
|
|
#16 |
|
Membre éclairé
![]() Chef de projet MOA Inscription : décembre 2004 Messages : 561 ![]() |
Tu dis:
"MAis ouvrir 2 fenetre et te logger sur les 2 fenetres te fera 2 session au meme titre que si tu étais sur 2 PC." Mais c'est justement ce que je cherche à éviter... Je veux qu'à chaque connexion (c'est à dire passage par le formulaire d'identification contenu dans la page index.php) si l'utilisateur avait une session ouverte, celle-ci soit détruite afin d'en créer une nouvelle. Ca permettrait de ne jamais avoir 2 sessions pour 1 utilisateur. |
|
|
00
|
|
|
#17 |
|
Membre expérimenté
![]() Inscription : mai 2002 Messages : 673 ![]() |
On s'en fiche de l'architecture...
Si le fait d'avoir 2 session pour le meme utilisateur (que ça soit sur le meme pc, en local, sur le net, en wifi, sur 2 explorateur different ou meme dans 2 frames sur le meme navigateur) te plante, c'est que tu as de toute évidence un problème grave dans ton code... et apres virer le session_destroy(), t'as bien fermé / re-ouvert ton navigateur ? T'es bien sur que t'utilises les cookies nul-part ? parce que tant bien meme tu aurais voulu faire ça volontairement, ça aurait été difficile a faire... EDIT : t'as posté pendant que je répondais, mais 2 sessions pour le même utilisateur ne sont pas censé s'affecter entre elle ! ça devrait pas poser de problème et tu devrais même pas avoir a t'en soucier... Je sais pas comment t'as réussi ce coup la sans les cookies a vrai dire... |
|
|
00
|
|
|
#18 |
|
Membre éclairé
![]() Chef de projet MOA Inscription : décembre 2004 Messages : 561 ![]() |
Encore un rectificatif... session_destroy() a un intérêt...: en fait lorsqu'un utilisateur travaille correctement et clic sur le bouton déconnexion celui-ci redirige vers la page index.php et donc session_destroy() détruit sa session.
|
|
|
00
|
|
|
#19 |
|
Membre expérimenté
![]() Inscription : mai 2002 Messages : 673 ![]() |
dans quelle page se trouve ta procédure de login ?
|
|
|
00
|
|
|
#20 |
|
Membre éclairé
![]() Chef de projet MOA Inscription : décembre 2004 Messages : 561 ![]() |
Voici l'enchainement des premières pages:
Page1 = index.php contient le formulaire demandant login et mot de passe. La soumission du formulaire envois à: Page2 = login.php contient la vérification du login et du mot de passe dans la base de données et si c'est ok alors créée les variables de session et renvois sur une page : accueil.php |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com