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] Supprimer une session après une période d'inactivité [Fait]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 12
    Par défaut [Cookies] Supprimer une session après une période d'inactivité
    Bonjour,

    Je souhaiterais déconnecter un utilisateur après une période d'inactivité, disons 30 minutes par exemple, et ce, en supprimant sa session.

    J'ai regardé plusieurs fois la doc php, lu les topics de ce forum et aucune réponse claire ne me vient !

    Est-il donc impossible de détruire une session après n minutes d'inactivité de l'utilisateur ?

    J'ai essayé plusieurs changement, mais je ne suis arrivé à aucun résultat :

    - session.cookie_lifetime établit la durée de vie du cookie. Si on la fixe à 30 minutes, le cookie expire certes, mais pas après 30 minutes d'inactivité

    - session.gc_maxlifetime est a sa valeur par défaut (1440), mais aucune session n'est jamais détruite (session.gc_probability = 1, session.gc_divisor = 100)

    - session.cache_expire est à 180

    Comme je ne trouve pas de réponse sur internet, je me dis que c'est surement pas possible, mais bon, je pose quand même la question !

    Peut-on supprimer une session après n minutes d'inactivité de l'internaute ?

  2. #2
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Salut!

    Regarde si un de ces sujets ne répondrait pas à ta question :

    http://www.developpez.net/forums/sho...d.php?t=494577
    http://www.developpez.net/forums/sho...d.php?t=413841

  3. #3
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 12
    Par défaut
    Salut

    Alors le premier post (que j'ai déjà lu), n'arrive à aucune conclusion sur la question.

    Pour le second, il le gère coté script, mais c'est l'utilisateur qui détruit lui même sa propre session en revenant sur la page.

    Ce que je voudrais faire, c'est détruire la session après 30 minutes d'inactivité, par exemple si l'utilisateur part déjeuner à 12h, je veux supprimer sa session vers 12h30, pas à 1h lorsqu'il revient de sa pause le midi, voire à 16h s'il ne se revient pas avant 16h. Je veux donc supprimer les sessions inactives, pas garder sa session et la supprimer pile quand il revient

  4. #4
    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
    La conclusion du premier post c'est que si on veut être sûr qu'une session expire, il faut le gérer soi-même.
    Il est possible que tu aies rencontré le même problème que moi : tu travailles (seul) sur ta machine de développement, et la session n'expire pas comme prévu. Sur un serveur de production ça ne devrait pas arriver, à moins que le site ait une audience proche de 0 : dès qu'un utilisateur accède à sa session, les autres sessions expirées sont détruites (enfin, ça dépend du rapport session.gc_probability/session.gc_divisor).
    Si on veut que la suppression des sessions expirées se fasse sans aucune connexion d'utilisateur, il faut planifier une tâche pour faire le nettoyage ...

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 74
    Par défaut
    Bonsoir,

    Ce que tu souhaites n'est pas possible, du moins pas à ma connaissance.
    Les sessions étant stocké côté serveur, je vois mal celui-ci allez regarder
    à chaque seconde si une de ses sessions n'a pas expiré.

    Et puis je vois mal l'intérêt, quel est le problème de regarder lorsque l'utilisateur tente d'accéder au site l'heure de sa dernière action et comparer cette dernière à l'heure actuelle et de le virer si besoin ?

  6. #6
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 12
    Par défaut
    Il s'agit d'un serveur en prod avec 800 utilisateurs par jours, donc non, ca n'est pas le problème

    @antony : sous les distributions debian, un cron se charge de purger les sessions. Il n'y va pas à chaque seconde heureusement ! Sur ma machine, il passe toutes les demi-heure.

    Sinon, pour répondre à ta question, j'ai pas mal d'utilisateurs qui dorment avec leur PC allumé, et qui se reconnecte le lendemain avec la session de la veille. Je ne souhaite pas garder ses sessions aussi longtemps.

  7. #7
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Citation Envoyé par {Anthony} Voir le message
    Ce que tu souhaites n'est pas possible, du moins pas à ma connaissance.

    Plusieurs solutions existent d'après moi :

    • Tu peux enregistrer la date de connexion dans une variable de session -> $_SESSION['date_log']. Ensuite, tu compares cette date avec la date courante pour obtenir la durée déjà écoulée...

    • Tu peux utiliser le même principe, mais avec une base de données pour stocker la date...

    • Une autre solution consiste à récupérer le chemin des fichiers de sessions avec la fonction session_save_path() et scanner ce dossier à la recherche du fichier portant le nom du SID du client. Puis comparer la date de ce fichier avec la fonction filemtime...

  8. #8
    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
    Si les sessions sont purgées avec la cron, une session ne devrait pas exister le lendemain ...
    Pour "améliorer", il suffit de faire tourner la cron plus souvent : 800/ jour, sur une base de 10h/jour, ça fait 80 utilisateurs connectés sur une heure. Bon, un utilisateur peut voir 10 pages avant de s'endormir, mais ça fait toujours que 80 sessions ...
    La tâche cron doit durer 5s max. Fais la tourner toutes les 5 mn. Au pire (si le front du gars heurte la touche entrée quand il s'endort et que la cron passe juste après) ça fera 35 mn ...

    Edit : Sub0 : Blast078 ne veut pas que la session soit purgée sur action de l'utilisateur, mais automatiquement ...

Discussions similaires

  1. Afficher une recherche après une sélection dans une ListBox
    Par vitalus dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/05/2015, 18h04
  2. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  3. Réponses: 0
    Dernier message: 30/09/2009, 18h42
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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