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

PHP & Base de données Discussion :

detection de fin de session [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut detection de fin de session
    Bonjour !

    Alors voici ma problématique du jour...

    J'ai une table de connectés ...
    un champs bool updtadé determine si le user est connecté ou non.
    Tout va très bien si le user se déconnecte normalement, ça me permet de faire un update de la table lorsque le user clique sur "deconnection" ...
    mais quid si la deconnection est sauvage ?
    A la limite sur le onbeforeunload de la page je peux encore faire l'update mais si je n'arrive pas à intrecepter la fermeture de la page ou le départ pour un autre site ?
    Comment mettre à jour la table dans ce cas là ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  2. #2
    Membre éclairé Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Par défaut
    Avec la fonction "onunload" dans ton tag body tu rediriges vers un script qui met à jour ta BDD, tu as essayé ?
    J'ai testé avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body onunload="javascript:alert('good bye !');">
    et lorsque je tape une nouvelle adresse dans la barre d'url, j'ai bien le message

  3. #3
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 487
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 487
    Par défaut
    tu peux faire un script qui tourne en boucle toutes les X minutes et qui regarde le timestamp de la derniere activitee du user.
    ou alors tu peux detecter la derniere activitee du user quand un autre user navigue sur ton site
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    pour le onunload ou onbeforeunload (que j'ai mentionné dasn ma question) cela suppose une action client ...
    si le onunload n'est pas declenché la table n'est pas mise à jour...

    pour ce qui est d'un script qui tourner toutes les X minutes ??? on fait ça comment en php ???
    Une action php est declenchée par une page porteuse ...
    Il faut que j'attende que quelqu'un tape une page non ???
    on peut lancer des actions 100% serveur sans intervention de user ????
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre éclairé Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Par défaut
    Pour une tâche exécutée toutes les X minutes, il faut regarder du côté de CRON si tu as la main sur le serveur.

    Pour le onunload, j'ai du mal comprendre ta requête mais il me semblait que dans tout les cas (changement de pages, fermeture d'onglet, fermeture d'appli) il fallait une intervention utilisateur et notemment pour le "départ vers un autre site"

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    le onunload ou onbeforeunload sert juste à lancer une fonction javascript qui appelle une page php et permet de mettre à jour la table...

    Si il y a plantage coté client, c'est a dire que la fermeture du browser se fait avant le declenchement de l'evenement onbeforuneload ou onunload, la mise à jour ne sera pas faite ...

    Pour le CRON je n'ai malheureusement pas la main sur tous les serveurs...
    dans certains cas je pourrais croner ...
    La question demeure pour les cas ou je ne peux pas croner ...

    peut on envisager une page php que l'on ne lancerait qu'une fois et quoi tournerait en boucle ??? ça me semble un peu du bidouillage qui va occuper le serveur inutilement non ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Membre éclairé Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Par défaut
    Si par plantage tu entends "crash" du navigateur, alors oui tu ne pourras pas mettre à jour ta BDD avec onunload.
    Par contre des les cas de changements d'url directement dans la barre, fermeture de l'onglet, fermeture du navigateur, tu pourras mettre à jour ta BDD a l'aide d'onunload.
    peut on envisager une page php que l'on ne lancerait qu'une fois et quoi tournerait en boucle ??? ça me semble un peu du bidouillage qui va occuper le serveur inutilement non ?
    N'est pas la finalité de CRON ?
    Tout a fait raison pour l'occupation mémoire de ton serveur.
    Par contre, techniquement je ne vois pas comment côté serveur automatiquement recharger le script sans CRON, je manque de compétences sur le coup probablement.

    Alternative :
    Il y a WebCRON mais il s'agit d'un service payant offrant une alternative pour les personnes n'ayant pas la main sur leurs serveurs.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    J'ajoute une autre solution, plus lourde cependant.

    Si tu as ré implémenté les sessions via la bdd ect.
    J'imagine que tu as du ré implémenter une fonction pour détruire l'information dans le sgdb lorsque la session est morte.
    A ce moment, tu pourrais inscrire une liste de callback, et les appeller avec par exemple le contenu de la session.
    Ensuite c'est au callback de se démerder pour nettoyer ce qui doit l'être.

    Si le Si n'est pas vrai alors laisse tomber cette solution.

    PS : n'ayant jamais ré implémenté la session j'ai un petit doute sur mon hypothèse de départ qui est de dire que php appel le callback de fin de session même lorsque l'action ne vient pas de session_destroy()

    a plus

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

Discussions similaires

  1. [AJAX] Detecter fin de session
    Par bender86 dans le forum AJAX
    Réponses: 5
    Dernier message: 16/04/2011, 19h53
  2. detecter fin de session
    Par wechteuf dans le forum VB.NET
    Réponses: 3
    Dernier message: 25/09/2009, 17h03
  3. detection de fin de session
    Par elan_gi dans le forum Langage
    Réponses: 18
    Dernier message: 23/06/2006, 12h39
  4. Detecter la fin d'un ecran de veille
    Par fredderf dans le forum MFC
    Réponses: 12
    Dernier message: 13/06/2005, 17h08

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