Probleme de relance de sessions sous IE - PHP - Programmation
Marsh Posté le 09-08-2006 à 11:57:47
Salut,
j'ai deja eu un probleme de ce type avec IE qui ne met pas a jour le cookie suite a un session_set_cookie_params(),
et j'avais trouve la solution suivante dans la doc PHP:
Code :
|
Marsh Posté le 09-08-2006 à 14:07:37
Merci pour l'info, je vais essayer.
En tout cas, avec la methode standard ( session_set_cookie_params(x) ), j'ai scanné les trames HTTP entre le serveur et IE, et on voit bien qu'a chaque requete le serveur envoie le cookie avec la nouvelle heure d'expiration.
Marsh Posté le 09-08-2006 à 15:12:30
Effectivement, ca a l'air de marcher...
Mais je n'arrive pas comprendre pourquoi, ça n'est pas logique (c'est IE vous allez me dire...). Car avec cette methode, quand le serveur repond a une requete, du coup il envoie 2 cookies dans sa reponse : le premier qui correspond au session_start(), qui ne contient pas de date d'expiration, et le 2eme, qui correspond au setcookie(), qui porte le meme nom et les memes données que le 1er, sauf qu'il a une date d'expiration en plus.
Pourquoi dans ce cas de figure IE met bien a jour en interne la date d'expiration du cookie "PHPSESSID", et pas quand on utilise juste session_set_cookie_params( x ) et session_start() ????? Qui je le rappelle envoie exactement la meme chose en plus !!
Quand est-ce que les gens utiliseront tous un autre navigateur que cette grosse merde d'IE ? Peut etre pourrions nous alors eviter de passer les 3/4 de notre temps de developpement a bidouiller pour que ca marche sous IE....
Marsh Posté le 09-08-2006 à 15:22:30
Je deviens fou, j'ai fait une mini page de test et maintenant ca marche !!!
<?php
session_set_cookie_params( 60 ); // Expiration du cookie de la session au bout de 60s
session_start(); // Creation ou restoration d'une session
session_register( "test" );
if ( $_SESSION["test"] === TRUE )
{ echo( "Session " . session_id() . " toujours active" );
}
else
{ echo( "Session terminée, creation d'une nouvelle session : " . session_id() );
$_SESSION["test"] = TRUE;
}
?>
Marsh Posté le 09-08-2006 à 15:32:44
Du coup j'ai reessayé avec ma page normale, et ca a marché !!!
Et là, nouvel essai, marche plus !! Et je viens de voir que parfois, une session de 60s dure bien moins longtemps sous IE : 30s et hop, session expirée !
J'abandonne ! Si vous croisez bill gates, mettez lui un coup de boule pour moi, ca soulagera mes nerfs !
Marsh Posté le 09-08-2006 à 11:39:10
Bonjour a tous
J'ai fait une page ou l'on doit se logguer pour acceder au contenu.
J'utilise les sessions comme mecanisme, car je stocke justement quelques variables de session, qui vont exister tant que la session est valide. J'utilise les cookies pour que le navigateur se souvienne de son n° de session et qu'il le renvoie a chaque requete vers le serveur. Je regle la durée de vie de ce cookie, ce qui permet de regler la durée de la session.
Au debut de ma page, j'ai donc :
session_set_cookie_params( 300 ); // Durée de la session 5 minutes
session_start(); // Crée une session ou restore celle en cours
Tout fonctionne bien sous firefox ou mozilla : a chaque fois que je fais une requete vers le serveur, celui ci renvoit au navigateur la page demandée, ainsi que le cookie contenant le n° de session mais avec une nouvelle heure d'expiration. Ce qui fait que si je fais une requete sur le serveur au bout de 4 minutes de non utilisation, la session est relancée pour 5 minutes.
Mais sous IE ca ne marche pas : il ne prend pas correctement en compte la nouvelle date d'expiration du cookie a chaque requete sur le serveur ! Ce qui fait que la session se termine 5 minutes apres la 1ere connexion, meme si on a fait des requetes sur le serveur (ce qui aurait du relancer pour 5 minutes !)
Bref, quelqu'un a deja eu ce probleme ? Comment corriger cela ?
Merci a tous