Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1996 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Probleme de relance de sessions sous IE

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme de relance de sessions sous IE

n°1422747
nlc
Le mieux est l'ennemi du bien
Posté le 09-08-2006 à 11:39:10  profilanswer
 

Bonjour a tous :hello:  
 
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

mood
Publicité
Posté le 09-08-2006 à 11:39:10  profilanswer
 

n°1422775
Woutcha
Posté le 09-08-2006 à 11:57:47  profilanswer
 

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 :
  1. $duree_session= 60*5;
  2. session_start();
  3. setcookie(session_name(),session_id(), time()+$duree_session, "/" );

n°1422858
nlc
Le mieux est l'ennemi du bien
Posté le 09-08-2006 à 14:07:37  profilanswer
 

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.

n°1422922
nlc
Le mieux est l'ennemi du bien
Posté le 09-08-2006 à 15:12:30  profilanswer
 

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 ?  :fou:  Peut etre pourrions nous alors eviter de passer les 3/4 de notre temps de developpement a bidouiller pour que ca marche sous IE.... :fou:

n°1422932
nlc
Le mieux est l'ennemi du bien
Posté le 09-08-2006 à 15:22:30  profilanswer
 

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;
    }
?>

n°1422944
nlc
Le mieux est l'ennemi du bien
Posté le 09-08-2006 à 15:32:44  profilanswer
 

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 !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Probleme de relance de sessions sous IE

 

Sujets relatifs
Delphi : Problème de format de dateProblème avec .find
Problème avec Vlookup et question sur MsgBox[ASP.NET 2.0] Problème de connexion à la base de donnée
Probleme code Htmlproblème de positionnement d'images
Probleme avec la fonction HEADERProbleme d'affichage aprés une balise div
Probleme url includermi probleme d'execution
Plus de sujets relatifs à : Probleme de relance de sessions sous IE


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR