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 très persistante


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Janvier 2007
    Messages : 489
    Par défaut Session très persistante
    Bonjour à tous,

    Mon problème est tout simple : mes sessions ne se régénèrent pas, mon identifiant de session reste inchangé... (session_id()

    Mon php.ini a la configuration suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    session.gc_maxlifetime:1800
    session.gc_probability:1
    Théoriquement je devrais avoir un nouvel identifiant de session / nouvelle session toutes le 30 minutes, là depuis 4 jours, je peux fermer x fois mon browser, rien...

    Quelqu'un pourrait il m'éclairer ?
    Merci à vous.

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 359
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 359
    Billets dans le blog
    17
    Par défaut
    Hello,

    Pour changer l'ID de session sans déconnexion, il existe session_regenerate_id().

    Pour connaître la configuration effective il vaut mieux passer par ini_get_all() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $s = ini_get_all('session', details: false);
    print_r($s);
    Théoriquement je devrais avoir un nouvel identifiant de session / nouvelle session toutes le 30 minutes, là depuis 4 jours, je peux fermer x fois mon browser, rien...
    Regarde session.cookie_lifetime, il faut le mettre à 0 pour que la session soit détruite à la fermeture du navigateur.
    https://www.php.net/manual/fr/sessio...ookie-lifetime

  3. #3
    Membre chevronné
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Janvier 2007
    Messages : 489
    Par défaut
    Hello Seb,
    Merci pour ta réponse.
    session.cookie_lifetime est bien à 0 ... je ne comprends pas

    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
    Array ( [session.auto_start] => 0 
    [session.cache_expire] => 180 
    [session.cache_limiter] => nocache 
    [session.cookie_domain] => [session.cookie_httponly] => [session.cookie_lifetime] => 0 
    [session.cookie_path] => / [session.cookie_samesite] => [session.cookie_secure] => 0 
    [session.gc_divisor] => 1000 
    [session.gc_maxlifetime] => 1800 
    [session.gc_probability] => 1 
    [session.lazy_write] => 1 
    [session.name] => PHPSESSID [session.referer_check] => [session.save_handler] => files [session.save_path] => /srv/data/var/php/www [session.serialize_handler] => php [session.sid_bits_per_character] => 5 
    [session.sid_length] => 26 
    [session.upload_progress.cleanup] => 1 
    [session.upload_progress.enabled] => 1 
    [session.upload_progress.freq] => 1% 
    [session.upload_progress.min_freq] => 1 
    [session.upload_progress.name] => PHP_SESSION_UPLOAD_PROGRESS 
    [session.upload_progress.prefix] => upload_progress_ [session.use_cookies] => 1 
    [session.use_only_cookies] => 1 
    [session.use_strict_mode] => 0 
    [session.use_trans_sid] => 0 )
    Après oui j'ai checké les diverses possibilités, on peut faire une rustine avec session_regenerate_id() ca impliquerait d'avoir un cookie supplémentaire avec la date de création, le comparer avec la date existante et si supérieure, régénérer.
    Ce n'est pas tip top, le système devrait fonctionner correctement à la base non ?

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 359
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 359
    Billets dans le blog
    17
    Par défaut
    Que veux-tu faire exactement ?
    As-tu testé sur une page ~vierge et minimaliste ?

  5. #5
    Membre chevronné
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Janvier 2007
    Messages : 489
    Par défaut
    Oui Seb
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php 
    session_start(); 
    $sess_id = session_id();
    echo $sess_id;
    ?>
    me renvoie le même session_id .

    Au final en fait l'importance de la durée du cookie tant qu'elle n'excède pas 1 heure on va dire est négligeable.

    Je me sers du session_id comme base pour mes stats interne de fréquentation & de suivi principalement (qui ne s'incrémentent pas forcement avec le même session_id du jour au lendemain ...) et pour certaines fonctionnalités.

  6. #6
    Membre chevronné
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Janvier 2007
    Messages : 489
    Par défaut
    Je lâche l'affaire... je me fie à l'IP c'est pas terrible mais plus fiable

  7. #7
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 703
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 703
    Par défaut
    Citation Envoyé par Gaetan_ Voir le message
    session.cookie_lifetime est bien à 0 ... je ne comprends pas
    c'est peut-être là qu'est le souci principal. vous avez peut-être plusieurs fenêtres ouvertes ou alors une instance buguée du navigateur qui n'affiche pas de fenêtre.
    quand vous regardez dans les outils de développement de votre navigateur, est ce que le cookie a l'air correct ?


    en ce qui concerne les options de réglages qui commencent par "gc_" il s'agit du système interne de nettoyage. si le site n'est pas très fréquenté, le nettoyage peut très bien se faire au bout de quelques jours.
    https://www.php.net/manual/fr/sessio...gc-maxlifetime
    https://www.php.net/manual/fr/session.security.ini.php


    Citation Envoyé par Gaetan_ Voir le message
    ca impliquerait d'avoir un cookie supplémentaire avec la date de création, le comparer avec la date existante et si supérieure, régénérer.
    vous n'avez pas besoin de créer un autre cookie pour cela, vous pouvez par exemple enregistrer la date de validité dans une variable de session.

  8. #8
    Membre chevronné
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Janvier 2007
    Messages : 489
    Par défaut
    Bonjour,
    Merci pour votre réponse Mathieu.
    Selon la doc, session.cookie_lifetime = 0 implique que la session est active jusqu'à la fermeture du navigateur.
    J'ai beau le fermer x fois, redémarrer l'ordinateur, elle reste persistante.

    vous n'avez pas besoin de créer un autre cookie pour cela, vous pouvez par exemple enregistrer la date de validité dans une variable de session.
    Alors là je ne vois pas comment faire.
    Pour moi tout était lié au php.ini ?

    Merci à vous

  9. #9
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 703
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 703
    Par défaut
    Citation Envoyé par mathieu Voir le message
    quand vous regardez dans les outils de développement de votre navigateur, est ce que le cookie a l'air correct ?
    ?

    Citation Envoyé par Gaetan_ Voir le message
    Alors là je ne vois pas comment faire.
    je ne suis pas sur d'avoir compris, vous avez besoin de quelle information dans votre code ?

  10. #10
    Membre chevronné
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Janvier 2007
    Messages : 489
    Par défaut
    Bonjour mathieu,
    Pardon pour la retard de ma réponse.
    En mode développement le seul cookie visible est celui d'Analytics.

    je ne suis pas sur d'avoir compris, vous avez besoin de quelle information dans votre code ?
    vous pouvez par exemple enregistrer la date de validité dans une variable de session.
    Je ne vois sais justement pas comment enregistrer une date de validité dans une variable de session...
    Je cherche mais non...

    Merci à vous

Discussions similaires

  1. VNC avec session persistante sous FEDORA
    Par arnaudperfect dans le forum Applications et environnements graphiques
    Réponses: 6
    Dernier message: 26/03/2008, 11h51
  2. dblink / session persistante
    Par Emmanuel Lecoester dans le forum SQL
    Réponses: 13
    Dernier message: 17/12/2007, 21h04
  3. Tomcat 6 session persistante - Exception
    Par MooGle dans le forum Struts 1
    Réponses: 3
    Dernier message: 25/05/2007, 00h16
  4. [Tomcat 5.5] Sessions persistantes / non sérialisables
    Par Gildas Huart dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 25/05/2007, 00h01
  5. Classes persistantes et session
    Par bendf82 dans le forum Hibernate
    Réponses: 3
    Dernier message: 11/12/2006, 11h59

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