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 :

[Cookies] Session qui n'expire pas comme prévu [Fait]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 131
    Par défaut [Cookies] Session qui n'expire pas comme prévu
    Bonjour
    J'ai des sessions qui expirent de façon aléatoire. Le plus souvent à la fermeture du navigateur, comme prévu par session.cookie_lifetime = 0, sauf que j'ai aussi session.gc_maxlifetime = 300, et que j'aimerais bien que ça expire au bout de 300s d'inactivité.
    J'ai mis session.gc_divisor = 1 pour que le ramassage d'ordures (garbage collection) soit exécuté à chaque accès à une session : pas de changement.

    Par contre, j'ai constaté ce soir que des informations avaient disparu dans le dossier session.save_path au bout d'environ 3/4h pendant que je faisais autre chose, alors qu'elles étaient toujours là au bout des 5mn. Quelqu'un avait tenté d'accéder à une page qui gère les sessions dans un autre répertoire.
    Alors j'ai fait un test : ouvrir une session avec Firefox. Attendre les 5 mn : session pas expirée. J'ouvre une session dans un autre répertoire avec IE, et hop, ma 1e session disparait ! mais ça ne marche pas à tous les coups ...

    Je ne vois pas trop où chercher ...
    Je mets un bout de code des fois que ça viendrait de là.
    Une idée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    // création de la session après login
    if (!isset($_SESSION)) session_start();
    $_SESSION["var1"] = "toto";
     
    // contrôle de session, dans une autre page
    if (!isset($_SESSION)) session_start();
    if (!isset($_SESSION["var1"])
    {
    message disant que pour la session a expiré
    exit;
     
    // j'ai aussi testé session_start() sans if (!isset($_SESSION))
    }

  2. #2
    Membre émérite Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Par défaut
    Salut,

    Déja le isset() tu peux le virer. $_SESSION est crée lors du session_start().

    Pour le raport avec IE/FF cela me parait louche, les cookies sont totalement différents, il ne peux donc y avoir aucune interaction.

    Peux tu être plus claire dans ton problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if (!isset($_SESSION["var1"])
    {
    Doit y avoir un parse error ici

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 131
    Par défaut
    Merci de ta réponse.
    Non je n'ai pas de parse error.
    En fait, les données de session ne sont pas supprimées sur le serveur, et la session n'expire pas.
    Je peux forcer l'expiration en ouvrant le fichier de sauvegarde de session dans le dossier session.save_path avec le bloc note et en supprimant le contenu (donc les variables de sessions). La session existe toujours, mais plus aucune variable.
    Par contre, si j'attends que le serveur le fasse tout seul, ça marche quand ça veut ...

  4. #4
    Membre émérite Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Par défaut
    Pas de parse error avec le code que tu as collé, je vois pas trop comment c'est possible.

    Colle toute ta config PHP concernant les sessions.
    Quelle version de PHP, quel OS ?

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 131
    Par défaut
    parse error, je ne vois pas pourquoi, la syntaxe est correcte ... ah oui, il manque une parenthèse, c'est le copier coller ...
    Je tourne sous XP pro SP2, Apache 2.061, PHP 5.20
    Config des session :
    session.save_path="D:\PHPTemp\session"
    session.save_handler = files
    session.use_cookies = 1
    session.use_only_cookies = 1
    session.name = PHPSESSID
    session.auto_start = 0
    session.cookie_lifetime = 0
    session.cookie_path = /
    session.cookie_domain =
    session.cookie_httponly =
    session.serialize_handler = php
    session.gc_probability = 1
    session.gc_divisor = 1
    session.bug_compat_42 = 0
    session.bug_compat_warn = 1
    session.entropy_length = 0
    session.entropy_file =
    session.cache_limiter = nocache
    session.cache_expire = 5
    session.use_trans_sid = 0
    session.hash_function = 0
    session.hash_bits_per_character = 5

    je viens de refaire un test : j'édite le fichier de sauvegarde de session, je fais sauter la variable que je contrôle => session expirée. je remets la variable dans le fichier => session retrouvée ...

  6. #6
    Membre émérite Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Par défaut
    Tu n'as pas tout collé là ? maxlifetime, etc.. ?

    Pour le parse error, regarde bien le code que tu as collé La syntaxe c'est pas bonne

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mission qui ne se passe pas comme prévu
    Par gueulederack dans le forum Emploi
    Réponses: 17
    Dernier message: 10/11/2011, 17h00
  2. Trigger qui ne s'execute pas comme prévu
    Par bringer dans le forum SQLite
    Réponses: 2
    Dernier message: 16/11/2009, 21h54
  3. Filtrage au niveau de la requête qui ne fonctionne pas comme prévu
    Par hartecel dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/06/2008, 14h06
  4. [Bonne pratique] merge qui ne fonctionne pas comme prévu
    Par forex dans le forum Subversion
    Réponses: 1
    Dernier message: 19/05/2008, 04h28
  5. Réponses: 5
    Dernier message: 21/12/2006, 19h28

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