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

JavaScript Discussion :

Tracker l'activité d'un utilisateur


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 152
    Points : 65
    Points
    65
    Par défaut Tracker l'activité d'un utilisateur
    Bonjour,

    Je ne suis pas du tout à l'aise avec Javascript, mais je souhaite savoir si l'utilisateur est "actif" ou "inactif" sur mon site.

    Pour cela, je pense utiliser les éléments .mousemove, .mousedown et .keydown puis effectuer un renvoi vers un fichier php si l'utilisateur est actif

    Disons, que je souhaite vérifier si l'utilisateur a été actif au moins une fois durant les 5 dernières minutes.

    Comment faire ? Car window.setInterval est executé tous les x moments...et n'est donc pas utilisable ?

    Merci

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 451
    Points : 4 600
    Points
    4 600
    Par défaut
    le probleme avec ton idee des .mousemove, .mousedown et .keydown, etc... c'est que tu risque d'etre flood d'event
    fais un console.log() d'un mousemove tu verras

    le plus simple est de faire un appel ajax a ton script php via un setInterval (qui tourne toutes les 10sec par exemple)
    l'ajax appel ton .php avec un argument de l'id de l'utilisateur (par exemple)
    => le php met a jour la BDD avec le timesamp de l'appel.
    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 !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 152
    Points : 65
    Points
    65
    Par défaut
    En effet c'est une mauvaise idée ^^

    Le truc qui me dérange un peu, c'est que si je n'utilise qu'un appel ajax avec setInterval, cela ne sera pas très précis.

    En effet, un utilisateur qui va faire ses courses en laissant la page ouverte, sera considéré comme étant "actif" alors qu'il ne l'est pas.

    C'est pour ça qu'initialement je voulais utiliser les divers attributs pour un traking individuel plus précis.

    Aurais tu une autre idée ?

  4. #4
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Généralement pour le tracking on récupère les actions de l'utilisateur en les associant à un tag.

    Par exemple quand il clique sur le bouton se connecter, on envoie un tag qui identifie cette action sur ce bouton. Quand il visite telle ou telle vue (en particulier sur les SPA), pareil, etc ...

    Si l'utilisateur n'a déclenché aucune action depuis une certaine durée tu peux le considérer inactif.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  5. #5
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Je ne vais pas questionner l’aspect éthique de la question…

    Pour éviter le problème de flood dont parle Doksuri, tu peux faire les choses en deux étapes : les évènements touchent juste une variable globale, et en parallèle tu as un setTimeout qui fait un « rapport » au serveur toutes les 5 minutes. À la fin du rapport, la variable globale est réinitialisé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
    15
    16
    17
    18
    19
    20
    let activity = false;
     
    document.addEventListener("mousemove", () => {
      activity = true;
    });
     
    // ...
     
    const reportActivity = () => {
      const req = new XMLHttpRequest();
      req.open("GET", "url-de-rapport?activity=" + activity);
      req.onload = () => {
        console.log("rapport ok");
        setTimeout(reportActivity, 5 * 60 * 1000);
        activity = false;
      };
      req.send();
    };
     
    setTimeout(reportActivity, 5 * 60 * 1000);
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

Discussions similaires

  1. [BUG] affichage de l'activité de l'utilisateur
    Par Rachel dans le forum Evolutions du club
    Réponses: 1
    Dernier message: 15/01/2012, 22h41
  2. [AC-2003] Gestion d'activité / inactivité d'un utilisateur
    Par desi dans le forum Access
    Réponses: 0
    Dernier message: 16/03/2010, 12h31
  3. Audit activité utilisateur sur SQL 2005
    Par Selendis dans le forum Développement
    Réponses: 2
    Dernier message: 02/03/2010, 14h07
  4. tracker les utilisateurs
    Par gloglo dans le forum Servlets/JSP
    Réponses: 17
    Dernier message: 09/11/2007, 16h45

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