aforpien
Messages postés118Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention12 mai 2010
-
30 nov. 2009 à 22:39
aforpien
Messages postés118Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention12 mai 2010
-
4 déc. 2009 à 15:09
Bonsoir à tous,
J'ai developpé un intranet pour ma société, et je suis bloqué sur un problème au niveau des sessions utilisateurs. J'ai créer des modules d'authentification qui sont fonctionnels, mais je souhaiterai juste savoir comment faire en sorte que la session ouverte puisse etre récupéré quand on ouvre une seconde occurence du site dans une nouvelle fenetre du navigateur. Est-ce-que je suis obligé de passer par les cookies, c'est à dire d'insérer un identifiant de session dedans et de tester à chaque ouverture de l'intranet si la session est active par rapport à l'id que je récupère dans celui-ci ? ou est-ce-qu'il existe une autre solution ?
merci d'avance à vous et bonne soirée
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 1 déc. 2009 à 13:32
Hello,
Le gestionnaire de sessions de PHP utilise déjà les cookies, par défaut. Inutile donc de manipuler des cookies en plus.
Ce qu'il y a, c'est que tu n'as pas dû configurer les cookies du gestionnaire de sessions. Tu peux pour cela utiliser la fonction session_set_cookie_params().
A priori, quand on ouvre une nouvelle fenêtre de son navigateur (ou un nouvel onglet) la session doit être trouvée et restaurée, sauf que par défaut, la durée de vie du cookie est 0 : cela signifie qu'il est supprimé à la fin de la session (fermeture du navigateur), ou non récupéré lors de l'ouverture d'une nouvelle fenêtre.
Un petit coup d'oeil à la doc concernant la configuration par défaut des sessions ne ferait pas de mal ;)
Pour changer la configuration des cookies du gestionnaire de sessions, tu peux donc, comme indiqué plus haut, utiliser la fonction session_set_cookie_param() ou définir chaque directive une à une (ou uniquement celles dont tu as besoin) avec ini_set() :
ini_set('session.cookie_lifetime', 3600); // Durée de vie du cookie 1h
--
Neige
Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 30 nov. 2009 à 22:49
Salut,
Comment gères-tu les sessions actuellement ?
En fait, tu n'as pas besoin de gérer les cookies, le gestionnaire de sessions de PHP s'en charge, pour peu qu'il soit configuré pour les utiliser.
Pour conserver la session utilisateur lors de l'ouverture d'une nouvelle fenêtre, effectivement, il est indispensable d'utiliser des cookies. A moins que l'ouverture de cette nouvelle fenêtre ne se fasse suite à un clic sur une page du site, auquel cas il est possible de passer l'identifiant de session dans l'URL, mais bon, c'est moins élégant et moins sécurisé.
--
Neige
Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
aforpien
Messages postés118Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention12 mai 2010 1 déc. 2009 à 13:11
Bonjour,
Merci pour ta réponse. Actuellement, je gère les sessions uniquement avec Php, je fais un "session_start()" à l'authentification. En fait ce que je voudrai c'est que l'authentification soit conservée si j'ouvre une autre fenetre du navigateur, mais pas forcément en cliquant depuis la fenetre déjà ouverte. Donc si je comprend bien, dans mon cas, je doit utiliser les cookies ? c'est à dire d'insérer un identifiant de session dedans et de tester à chaque ouverture de l'intranet si la session est active par rapport à l'id que je récupère dans celui-ci ?
Merci à toi !
aforpien
Messages postés118Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention12 mai 2010 4 déc. 2009 à 14:50
Cependant j'aurai une autre question : Comment la page sait-elle que la session est ouverte ? meme avec ce parametre, la session n'est pas ouverte quand j'ouvre une seconde fenetre. Dois-je créer un code qui doit regarder si l'on récupère un cookie ou quelque chose dans le genre ?