|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() Inscription : octobre 2007 Messages : 676 ![]() |
Bonjour,
j'ai créé un site avec une zone d'authentification (login+mot de passe). Quand on se connecte, on entre dans la partie privée, on clique sur des liens du menu et voila. Usage normal quoi. Enfin sous Chrome en tout cas. Sous firefox et IE, j'ouvre bien ma première page une fois qu'on est connecté, mais si je clique sur un autre lien du menu, hop, je reviens à ma page d'authentification. Et c'est le même comportement sur les deux navigateurs, aucune page spécifique. Au bout de la seconde ouverture, hop je reviens au départ. Est-ce que cela vient d'une session ? Un problème autre ? Si vous avez des idées je veux bien parce que là ...
|
|
|
00
|
|
|
#2 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Hello
Tu as pensé à vérifier le life time de ta session ? pour un cookie qui n'expire pas.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
00
|
|
|
#3 | |
|
Membre confirmé
![]() Inscription : octobre 2007 Messages : 676 ![]() |
Dans mon php.ini j'ai :
Citation:
|
|
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Thierry NFC & DevWeb Inscription : avril 2006 Messages : 1 175 ![]() |
Il est très difficile de te fournir une réponse fiable car les raisons peuvent multiples étant donné que la méthode que tu utilise n'est pas connue (puisque tu ne l'explique pas).
Mais avec les infos que tu donnes, tu peux déjà essayé d'afficher le contenu de ta print_r($_SESSION) et de print_r($_COOKIE) pour voir ce qu'il se passe. |
|
|
00
|
|
|
#5 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Également vérifie l'expiration des sessions au niveau d'apache.
Ce serait plus simple si tu nous donnais le contexte dans lequel tu travailles (OS, Serveur HTTP, version de PHP etc.) C'est peut être idiot mais vérifie bien qu'il n'y a pas un bout de code qui traine quelque part et qui ferme la session.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
00
|
|
|
#6 | ||||
|
Membre confirmé
![]() Inscription : octobre 2007 Messages : 676 ![]() |
Ah oui mince, oublié de donner les détails.
Donc je suis sous EasyPHP 5.3.1.0, PHP 5, Windows XP. Pour me connecter : Code :
- le print_r($_SESSION) affiche la même chose sur les différents navigateurs. - le print_r($_COOKIE) affiche moins de valeurs sur Firefox que sur Chrome : j'ai deux valeurs [__utma] et [__utmz] en plus mais aucune idée de ce à quoi ça correspond Hum, j'y pense ... Est-ce qu'un "session_start()" en trop (par exemple un session_start() non nécessaire) pourrait faire casser une session et revenir au départ ? Pour l'expiration des sessions dans Apache, comment je le vois ? ![]() [EDIT] J'ai une page me permettant d'afficher les informations du compte sur lequel je m'authentifie. Quand je souhaite afficher celles-ci, je n'ai que des undefined, comme si mes valeurs de session avaient été supprimées. D'où le fait que je revienne ensuite sur l'authentification. J'ai donc ce cheminement : - authentification -> session et variables de session OK - clic sur une page -> destruction des variables de session - clic sur une autre page -> demande d'authentification car plus de variable de session Dans mon header, j'ai ceci : Code :
[EDIT 2] : le problème vient bien de mon dernier code. Donc maintenant, reste à savoir comment exécuter ma page de déconnexion quand je ferme le navigateur ! Si vous avez une idée ...
|
||||
|
|
00
|
|
|
#7 | |
|
Membre émérite
![]() Alain Inscription : novembre 2005 Messages : 897 ![]() |
Citation:
A priori, il n'y a pas de solution, sauf si c'est intentionnel de la part de l'utilisateur. Bouton " Me déconnecter", par exemple. Mais dans la majorité des cas, les visiteurs ferment tout simplement le navigateur. Ce qui a pour conséquence de brider toute action côté scripts. Plus de connexion = Plus d'interaction avec ton www.
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre. C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles. |
|
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Thierry NFC & DevWeb Inscription : avril 2006 Messages : 1 175 ![]() |
As tu regardé onunload() ?
|
|
|
00
|
|
|
#9 |
|
Membre confirmé
![]() Inscription : octobre 2007 Messages : 676 ![]() |
Merci pour vos réponses.
riete > ça ne fonctionne pas comme je voudrais, comme si ma page n'était pas lancée (deconnexion.php). alain31tl > j'ai bien un bouton de déconnexion donc si l'utilisateur clique dessus ce sera bon. Ce qui est dommage, c'est que ça fonctionnait bien avec Chrome, mais pas avec IE et Firefox A moins que vous ayez une autre solution pour pouvoir enregistrer la date du jour au moment où l'on quitte le web ? (pour qu'ensuite, à la prochaine reconnexion on obtienne la date de dernière connexion). |
|
|
00
|
|
|
#10 | |
|
Membre émérite
![]() Alain Inscription : novembre 2005 Messages : 897 ![]() |
Citation:
Si on quitte le web, plus d'interaction, donc scripts inopérants. En revanche, tu peux toujours enregistrer une session et ses composants en base de données, ceci au moment de l'identification, ou/voire au fur et à mesure de la visite.
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre. C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles. |
|
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() Inscription : janvier 2006 Messages : 951 ![]() |
contente toi de donnée l'heure de la derniere fois que ton utilisateur a appelé une page sur ton site. ça suffira comme approximation.
__________________
PHP fait nativement la validation d'adresse électronique Utilisez le bouton résolu! |
|
|
00
|
|
|
#12 |
|
Membre confirmé
![]() Inscription : octobre 2007 Messages : 676 ![]() |
Sauf que l'heure je trouve ça un peu moins important
Et si je fais deux champs dans ma base de données : - oldconnexion - newconnexion Quand je me connecte, j'enregistre la date du jour dans newconnexion, et la date qui était avant dans newconnexion, je la passe dans oldconnexion et j'affiche celle-ci. J'aurai bien ma date de dernière connexion du coup ? C'est tordu mais ça peut le faire ?
|
|
|
00
|
|
|
#13 |
|
Membre émérite
![]() Alain Inscription : novembre 2005 Messages : 897 ![]() |
Dans ce cas là et si celà te convient, utilise plutôt timestamp, bien plus précis.
Enuite, c'est juste une histoire de comparaison. Si < .... Si > .... etc...
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre. C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles. |
|
|
00
|
|
|
#14 |
|
Membre confirmé
![]() Inscription : octobre 2007 Messages : 676 ![]() |
Est-ce utile si je veux juste récupérer le jour, le mois et l'année ?
Par contre, je dois bien garder les deux dates si je veux à chaque fois afficher l'ancienne date et non la nouvelle, non ? |
|
|
00
|
|
|
#15 |
|
Membre émérite
![]() Alain Inscription : novembre 2005 Messages : 897 ![]() |
L'un n'empêche pas l'autre.
Tu peux utiliser timestamp pour réaliser ta comparaison. Et dans le même temps, conserver aussi les dates complétes en base de données. Soit olddate ou newdate. Timestamp, c'est juste pour te faciliter la tâche dans cette démarche.
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre. C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles. |
|
|
00
|
|
|
#16 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Je n'arrive pas à comprendre le but de ta démarche. Pourquoi veux tu que la session soit détruite quand l'utilisateur quitte le site ? Y a t'il une logique particulière de sécurité derrière qui pourrait être mise en place avec un configuration au niveau d'apache ?
Généralement, on préfère mettre un time to live assez court à une session que l'on veut sécuriser (de l'ordre des 2 minutes comme chez free.fr par exemple).
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
00
|
|
|
#17 |
|
Membre confirmé
![]() Inscription : octobre 2007 Messages : 676 ![]() |
Hum, c'est pas mieux de détruire une session quand on quitte un navigateur ? Si par exemple, on n'est pas sur un ordi perso ? Après je peux me planter effectivement
|
|
|
00
|
|
|
#18 |
|
Membre émérite
![]() Alain Inscription : novembre 2005 Messages : 897 ![]() |
Un cookie est persistant sur un pc, tant que les temp ne sont pas effacés.
Une session "PHP" a une durée de vie...relativement courte.
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre. C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles. |
|
|
00
|
|
|
#19 | |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 707 ![]() |
Salut
Citation:
Admettons que tu adopte le principe qu'a donné Alain31tl, soit un bouton/lien de déconnexion (page deconnexion.php, comme pour ce forum, qui à mon sens est le moyen le plus fiable), et bien sa dernière connexion c'est celle ci, la déconnexion, c'est justement sa dernière action en temps qu'utilisateur connecté, après, elle ne le sera plus. C'est ça la réalité, non ? Pourquoi la fausser ? Pourquoi donc ce compliquer la vie d'enregistrer la date précédente ? D'ailleurs, c'est ainsi que fonctionne les sessions, il n'y a pas 2 dates. La date de dernière action c'est la date de dernière modification du fichier.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
|
00
|
|
|
#20 |
|
Membre émérite
![]() Alain Inscription : novembre 2005 Messages : 897 ![]() |
RunCodePhp
J'ai répondu en fonction de la requête du moment et qu'il a formulée, c'est tout. Et je n'impose pas de méthode. Aprés tout, je ne connais pas ses besoins précis et les raisons rationnelles qui nécessitent cette élaboration... Et si tel était le cas, je répondrais peut-être differemment, pour ensuite développer plus en profondeur.
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre. C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com