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 :

Gérer déconnexion utilisateur après x temps


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 82
    Par défaut Gérer déconnexion utilisateur après x temps
    Bonsoir,

    J'aimerais déconnecter un utilisateur après un certain temps, pourrait-on m'éclaircir sur la façon de faire s'il vous plaît ?
    [edit] Déconnecter : placer un flag à 0 à la fermeture du browser.

    J'ai bien essayé du coté de javascript de catcher l'event unload, mais celui si se déclenche aussi sur le refresh de la page, hors j'aimerais que l'utilisateur soit déconnecté seulement si il ferme le browser(alt f4, X, .. ).

    Merci d'avance pour toute aide

    Salutations,

    Leole

  2. #2
    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
    Est-ce que tu veux le deconnecter au bout d'un certain temps ou lorsqu'il ferme son navigateur ?

    Et qu'entends-tu par deconnecter ? Si tu parles de sessions PHP elles sont déjà terminées quand le navigateur est fermé par exemple.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2009
    Messages : 34
    Par défaut
    Soit tu expires la session, soit ajoute une valeur dans ta session du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //$_SESSION['temps_derniere_page']
     
    //ensuite tu vérifies le temps écoulé avec l'heure actuel. 
     
    if(($heureactuel - $_SESSION['temps_derniere_page']) > $temps_autorisé)
            //on détruit la session en cours
            session_destroy() ;
    else
            //On renseigne l'heure de connexion
            $_SESSION['temps_derniere_page'] = $heure_actuel;
    Une petite inclusion dans ton header et voila.

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 82
    Par défaut
    Tout d'abord, merci pour vos réponses.

    En relisant mon poste, je n'ai pas donné assez d'informations et cela peut porter à confusion.

    J'ai un flag logged dans une db mysql pour chaque user, la session est bien détruite quand il ferme le browser mais le flag reste à 1.

    J'aimerais pouvoir gérer ça, c'est pour ça que j'avais pensé au javascript mais ca ne fonctionne pas, ce que j'entends par déconnecter, serait de positionner le flag à 0 quand il quitte brusquement

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 325
    Billets dans le blog
    17
    Par défaut
    Plutôt qu'un flag online 0/1 utilise un champ DATETIME "dernierpassage" que tu mettras à jour à chq affichage de page.
    Ensuite les utilisateurs dont :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dernierpassage < NOW( ) - INTERVAL 5 MINUTE
    Pourront être considérés offline.

  6. #6
    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
    La solution la plus fiable est celle donnée par Xzen : au lieu d'un flag, tu indiques la date et l'heure.
    Le champ est actualisé quand l'utilisateur charge une page.
    Lorsque le temps entre maintenant a la derniere actualisation est supérieur à X minutes, tu considères l'utilisateur deconnecté.

    Tu peux sinon déclencher un événement Ajax a la fermeture du navigateur mais ce n'est pas necessairement plus fiable : un utilisateur qui part le soir en laissant son navigateur sur la page, sera marqué comme connecté.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 82
    Par défaut
    Bonjour, merci pour vos précisions, c'est plus clair maintenant.

    La page étant celle d'un chat, est-ce correct d'un point de vue pratique de la refresh automatiquement tous les x temps pour checker si il y a timeout ou non ?

    Merci d'avance

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 01/07/2015, 18h44
  2. Déconnexion bdd après un certains laps de temps
    Par Nico-x dans le forum Général Java
    Réponses: 1
    Dernier message: 29/04/2009, 19h04
  3. Réponses: 1
    Dernier message: 07/01/2009, 11h43
  4. fermeture d'une application après un temp d'inactivité?
    Par sitdown dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 24/08/2005, 15h44
  5. Réponses: 6
    Dernier message: 25/08/2004, 09h50

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