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

Symfony PHP Discussion :

Afficher la liste des personnes connectées


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 82
    Par défaut Afficher la liste des personnes connectées
    Bonjour à tous,

    Pour mon site web, je souhaiterai pouvoir afficher quelque part la liste des utilisateurs connectés et éventuellement le nombre de personne connecté.

    Je pense pour cela rajouter un champ dans sf_guard_user_profile: is_connected type int(1) que je passerai à 1 lorsque l'utilisateur se connecte puis à 0 lorsqu'il se déconnecte ou que son cookie de session a expiré.

    Tout d'abord, est-ce une bonne solution?

    Si oui, comment faire pour updater la base de données aux moments adéquat (je n'arrive pas à trouver l'action sf_guard_signin qui permet de mettre a jour le champ update_at à la valeur de la date à laquelle l'utilisateur s'est connecté pour la dernière fois).

    Je précise que j'ai modifié le temps de conservation du cookie de session à 36h...

    Merci de votre aide

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Es-tu sur que ta théorie soit la plus réaliste ?

    Avec tes paramètres, un gugus qui ne se déconnecte pas sera considéré comme connecté même s'il n'a plus bougé depuis plus d'un jour ? Et comment fais-tu pour changer les valeurs, vu que tu n'as pas l'heure de la dernière connexion ?

    On avait déjà une discutions la dessus et l'idée était de stocker les sessions dans une table de la base, et de ce servir des sessions pour compter le nombre de connecter, dans mes souvenirs, il y a avait un problème avec sfGuard, qui ne nettoye pas correctement les sessions, il laisse une session pour l'utilisateur inconnu, une fois l'utilisateur connecté (ben oui, avant d'être connecté, il est inconnu...)

    A priori, cela est corrigé dans la dernière version. Mais même là, il reste ta durée de session trop long...


    La solution serait, je pense, de passer par les filtres, de créer un filtre session, qui, éventuellement, vérifie si la personne est connectée ou anonyme, et la création d'un enregistrement dans une table avec le type de user, l'id pour un connecté, le N° de session pour un non connecté et un time code. Une routine qui passe épisodiquement une fois sur X (X dépend du nombre de connexions par heure, plus les connexions sont nombreuses, plus X doit être grand). Cela implique de récupérer les événements de connexion et déconnexion pour traiter la table en conséquence.

    Pas simple, il est étonnant qu'il n'y ait pas un plugin qui le fasse, du moins, je n'ai jamais vu.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 82
    Par défaut
    Et si je garde le cookie que pendant 1heure d'inactivité, ma théorie serait-elle possible??

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 82
    Par défaut
    Après plus amples réflexions, j'ai décidé de mettre dans le fichier factories.yaml ces parametres:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      user:
        class: myUser
        param:
          timeout: 1800
     
      storage:
        param:
          session_cookie_lifetime: 1800
    Je ne garde donc la session ouverte que pendant 30min.
    Du coup je pense que mon idée de rajouter un is_connected dans la table profile sera appliquable et que cette théorie est réaliste.

    Qu'en pensez-vous?

    Dans le cadre de cette théorie, il faut que je passe à 1 le champs quand l'utilisateur est bien connecté et à 0 quand il se déconnecte.
    A priori rien de bien compliquer pour le moment sauf que je ne trouve pas l'endroit auquel je dois effectué cette requète...


    Plus difficile, il faut que je passe à 0 le champ lorsque le cookie de l'utilisateur a expiré. Est-ce faisable de vérifier l'existence de son cookie ou pas? Si oui comment?

  5. #5
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Tu ne peux pas vérifier l'existance d'un cookie hors une demande explicite de connexion de l'utilisateur. De plus, s'il a coupé l'ordinateur sans déconnecter tu ne peux pas le savoir.

    En fait, je ne tiendrais absolument pas compte de la durée de la session.

    J'ai donné la solution à l'aide d'un filtre qui gère la mise à jour d'une table dédiée. Et il faut y mettre un timecode de la dernière apparition de l'utilisateur, pour calculer s'il est encore en ligne, ou pas (on dira moins de 3 minutes, en ligne, entre 3 et 6 minute, peut-être en ligne, plus de 6 minute, plus en ligne), les informations ne pourrons être qu'informative, jamais certaines.

    Il reste, si c'est vital pour l'application, la possibilité de passer par un code javascript sur toutes les pages qui envoie un jeton régulier tant que la page est affichée dans l'explorateur. La, on peut savoir réellement, combien de personnes affiche une page du site. Avec des complications, si une personne à plusieurs pages dans plusieurs fenêtres, une charge réseau et système importante et on ne compte pas les personnes qui ont désactivé le javascript.

Discussions similaires

  1. Afficher la liste des internautes connectés
    Par Scots dans le forum Développement Web avec .NET
    Réponses: 1
    Dernier message: 29/05/2015, 11h13
  2. [PHP 5.0] Liste des personnes connectées
    Par ridazero dans le forum Langage
    Réponses: 2
    Dernier message: 30/04/2013, 14h46
  3. Réponses: 8
    Dernier message: 27/05/2008, 15h48
  4. Afficher la liste des connectés à une BDD
    Par GD91 dans le forum Access
    Réponses: 4
    Dernier message: 04/10/2006, 14h55
  5. liste des users connectés à une base acces
    Par progima dans le forum Access
    Réponses: 2
    Dernier message: 07/11/2005, 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