IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

session.gc_maxlifetime ou session.cache_expire ?


Sujet :

Langage PHP

  1. #21
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Bon, il me semble tenir le bon bout, et c'est très simple apriori.

    En faite, en faisant d'autres essais, j'ai remarqué qu'il fallait que les 2 directives du php.ini session.cookie_lifetime et session.gc_maxlifetime soit concordantes (sinon avoir les mêmes valeurs) pour que ça fonctionne.

    Dans mon dernier essai, j'ai effectué ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
    ini_set('session.cookie_lifetime', 10);
    ini_set('session.gc_maxlifetime', 10);
     
    session_start();
     
    $params = session_get_cookie_params();
     
    echo '<pre>';
    echo 'apache_request_headers :<br />';
    print_r(apache_request_headers());
    echo 'apache_response_headers :';
    print_r(apache_response_headers());
    //
    echo 'session_name : '.session_name().'<br />';
    echo 'session_id : '.session_id();
    print_r($params);
    echo 'lifetime : '.date('d/m/Y H:i:s', $params['lifetime']);
    print_r($_COOKIE);
    echo '</pre>';
    ?>
     
    <a href="index.php">INDEX</a>
    Et là, la session change si on clique sur le lien (en bas) au-delà de 10 secondes.

    Aussi, on peu vérifier qu'avant le délai de 10 secondes que le cookie est présent coté navigateur, mais au-delà il est supprimé.
    Le navigateur le fait automatiquement.
    D'ailleurs, on peu remarqué lorsque le cookie est encore là, qu'une date est affichée, alors que dans les essais précédant, c'était toujours "à la fermeture". (c'était cette 2ème énigme que je ne parvenais pas à comprendre).

    Donc ici finalement, on s'assure que des 2 cotés, client et serveur, que cette persistance sera stoppée/supprimée dans le délai qu'on s'est fixé (même 10 secondes).


    Mais encore, dans mes essai, j'ai (provisoirement) modifié la directive session.gc_divisor en mettant 1 (1000 par défaut) dans le php.ini.
    Au final, on remarque parfaitement que Php (ou le système) supprime immédiatement les fichiers de sessions expirés.
    A priori, le ramasse serait déclenché à chaque fois que le fichier est demandé.
    Mais mettre 1 pour le gc_divisor, c'est vraiment pour faire ce genre d'essai, certainement pas pour un site en production.


    En résumé, on peu (apparemment) parfaitement reproduire un fonctionnement des sessions même sur 1 seul post en local.
    Et pour le problème évoqué ici, il suffit mettre les même valeurs aux session.cookie_lifetime et session.gc_maxlifetime.

    Voilà voilà.

  2. #22
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    En résumé, on peu (apparemment) parfaitement reproduire un fonctionnement des sessions même sur 1 seul post en local.
    Oui en jouant sur la vie du cookie mais c'est du contournement qui ne sert pas à grand chose.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #23
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Citation Envoyé par sabotage
    Oui en jouant sur la vie du cookie mais c'est du contournement qui ne sert pas à grand chose.
    Et pourquoi donc ça ne servirait pas à grand chose ?

    Personnellement je trouve que ça au contraire un grand intérêt.
    Le simple fait que par défaut le cookie est détruit uniquement à la fermeture du navigateur,et bien ça veut dire qu'il sera accessible jusque là.

    Or, en définissant explicitement un délai, il sera détruit selon le délai qu'on a décidé.
    Il y aura alors moins de phénomène aléatoire ou hasardeux.
    Ce post l'a largement démontré quant laissant les chose faire un peu trop automatiquement, on est pas à l'abri d'un problème.


    Personnellement, je préfère fixer des délai.
    Mais ça n'engage que moi, évidement.


    Puis c'était surtout l'occasion de me remémorer tout ça, car avec le temps on oubli

  4. #24
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 104
    Par défaut
    Eh bien moi ce qui me fait peur avec tout ca, c'est peut etre le fait d'avoir mal compris ou de mal utiliser les sessions/cookies.

    Dans certains cas, je n'utilises uniquement que les sessions, parfois j'ai besoin de cookies que j'assimile aux sessions (selon les cas et les besoins).

    En revanche, hormis quand j'utilise les cookies ; je ne me suis jamais préoccupé du temps de "validité" d'une session : dans la plupart des cas, si la session vient à être expirée lorsque l'on surfes sur un site ; c'est que pour moi ; le visiteur à été inactif trop longtemps.

    Hors c'est vrai que dans les besoin spécifiés pour réaliser cette zone administration, le client souhaites avoir une "identification" plus longue. J'ai remanié tout ca d'une autre facon (avec un htaccess) mais il vas falloir que je me repenche dessus plus sérieusement ...

    Comme quoi même quand on penses maitriser un sujet, on à toujours des surprises !

Discussions similaires

  1. [JSP][session] perte de session et sendRedirect
    Par blaz dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 30/03/2007, 09h32
  2. session start contre session register
    Par michka999 dans le forum Langage
    Réponses: 2
    Dernier message: 30/08/2006, 15h41
  3. Réponses: 1
    Dernier message: 30/03/2006, 07h19
  4. [Sessions] lifetime de session ie...
    Par datz dans le forum Langage
    Réponses: 8
    Dernier message: 10/10/2005, 03h40
  5. Session() ou Set session()
    Par CDRIK dans le forum ASP
    Réponses: 5
    Dernier message: 04/10/2004, 14h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo