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 :

[Système] Savoir qui est connecté en ce moment


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de sourivore
    Homme Profil pro
    Lead Tech Front-End
    Inscrit en
    Juin 2005
    Messages
    451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lead Tech Front-End

    Informations forums :
    Inscription : Juin 2005
    Messages : 451
    Par défaut [Système] Savoir qui est connecté en ce moment
    Comment puis-je faire pour savoir qui est connecté à mon site pour pouvoir l'afficher ensuite?
    Plusieurs sites font cela et j'aimerais bien savoir l'astuce.

    Quelque chose du genre:

    Joueurs connectés:

    Bidule
    Machinchouette
    Trucmuche

  2. #2
    Membre éprouvé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Par défaut
    Le mieu pour ca c'est de faire une table sur ta bdd dans laquelle tu crée un champ ip timestamp et Nom.

    Lorsque'un utilisateur se connecte tu met le nom dans Non, et apres si l'utilisateur na pas rafraichi de page pendant un certain temps tu efface la ligne de la BDD.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2005
    Messages : 22
    Par défaut
    Je suis assez interressé par sa aussi, pouvez vous me dire comment procédé afin de contrôler si il est connecté ? Il y a une fonction ?

    Enfin je ne vois pas trop comment procéder si quelqu'un saurait m'éclairer.

    Merci d'avance

    Mikiman

  4. #4
    Membre émérite Avatar de trattos
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 000
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 000
    Par défaut
    Un visiteur arrive, tu rajoutes un enregistrement dans ta table!
    Pour affichier le nombre de connectés, tu comptes le nombre d'enregistrements!
    Tu effaces tout les enregistrements qui datent de plus de 20 minutes!

  5. #5
    Membre éclairé Avatar de sourivore
    Homme Profil pro
    Lead Tech Front-End
    Inscrit en
    Juin 2005
    Messages
    451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lead Tech Front-End

    Informations forums :
    Inscription : Juin 2005
    Messages : 451
    Par défaut
    Et comment savoir si un utilisateur n'a pas rafraichi sa page depuis 20 min???

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 581
    Par défaut
    Y a aucune technique sûre à 100% dans ce domaine. Tout au mieux, tu peux obtenir un nombre approximatif de visiteurs connectés mais toujours sans certitude absolue.

    Le seul moyen de vérifier serait de compter le nombre de sessions ouvertes en comptant le nombre de fichiers sess_.... par ex si session_handler=files et encore car la manière dont les fichiers de sessions sont supprimés varient parfois d'une plateforme à l'autre.
    Bref, tu ne peux avoir aucune garantie du nombre de visiteurs réellement connectés.

    Travailler avec une base de données est l'usage habituel mais là encore, tu ne peux garantir à 100% qu'il y a "N" utilisateurs connectés car si tu considères qu'après 20 min d'inactivité, l'utilisateur est déconnecté, ça n'engage que ta propre considération, rien ne dit que la personne n'est pas toujours en train de lire une page de ton site . Enfin bon, faut bien mettre des limites

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2005
    Messages : 22
    Par défaut
    Ok, Merci beaucoup de vos réponse ^^.
    Je vais essayer de trouver une manière plus ou moins correct même si sa ne dit pas forcément exactement ^^.

    Merci encore
    Bonne journée

    Mikiman

  8. #8
    Invité4
    Invité(e)
    Par défaut
    Oui cette méthode est bien, perso j'utilise à 5 minutes.

    Tu crée une table avec un champ pseudo et timestamp.
    Et a chaque fois que le gars charge une page :
    Tu rajoute son pseudo et le timestamp actuel si il n'y est pas deja
    sinonn tu actualises le stamp
    tu supprime les vieux timestamp

    Je te jure que c'est fait en 30 minutes.

  9. #9
    Membre éprouvé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Par défaut
    Citation Envoyé par Eldacar
    Oui cette méthode est bien, perso j'utilise à 5 minutes.

    Tu crée une table avec un champ pseudo et timestamp.
    Et a chaque fois que le gars charge une page :
    Tu rajoute son pseudo et le timestamp actuel si il n'y est pas deja
    sinonn tu actualises le stamp
    tu supprime les vieux timestamp

    Je te jure que c'est fait en 30 minutes.
    c'est la methode que je disait ^^

    En plus a pres tu peut améliorer ta table et envoyer par exemple le titre de la page, come ca tu peut suivre ou vont tes utilisateurs ^^.

  10. #10
    Invité4
    Invité(e)
    Par défaut
    c'est la methode que je disait ^^
    OK! Desolé de la répétition

  11. #11
    Membre habitué
    Inscrit en
    Juin 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 14
    Par défaut
    Il est également possible d'envoyer régulièrement une requête au serveur pour prouver que le navigateur reste connecté:

    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
    21
    22
    23
    24
    25
    26
    27
    28
     
    <script type="text/javascript">
    var Connexion = {
     
      iframe : null,
     
      init : function()
      {
         this.iframe = document.createElement('iframe');
         this.iframe.style.position  = 'absolute';
         this.iframe.style.visibility = 'hidden';
         document.body.appendChild(this.iframe);
      },
     
      sendRequest : function()
      {
          this.iframe.src = 'exec.php';
          setTimeout('Connection.sendRequest()',60000);
      }
     
    };
     
     
     
    Connexion.init();
    Connection.sendRequest();
     
    </script>

    Explication pour les néophytes en javascript:
    Je crées en javascript une balise iframe en définissant un style css pour la cacher aux yeux de l'internaute. Ensuite, j'envoie toutes les minutes une requête par cet iframe. Le fichier php exécuté est exec.php

    Quand au code php, il est trivial. Je vous laisse le concevoir selon vos besoins.

    Sinon, il existe encore une autre solution basée sur le même principe, mais augmentant la compatibilité car elle ne fait pas appel à javascript:

    Dans la page, il suffit de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <iframe style='position: absolute; visibility: hidden' src='exec.php'></iframe>
    Et dans la page exec.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    //code php
    ?>
    <html>
    <head>
    <meta http-equiv="refresh" content="60; URL=exec.php">
    </head>
    <body>
    </body>
    </html>
    La page se rechargera ainsi d'elle même toutes les minutes.

    Ces 2 solutions sont théoriques car je n'ai pas pris le temps de les tester. Elles devraient marcher.

  12. #12
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 515
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 515
    Par défaut
    Pour la derniere solution j'aurais tendence à utiliser ajax à la place du iframe même si le resultat reste le même mais l'iframe, même invisible peut finir par agacer l'internaute car si ce dernier est sur IE il va entendre le bruit du clique tous les x temps sans vraiment savoir pourquoi et donner l'impression que quelque chose se fait dans son dos

  13. #13
    Membre habitué
    Inscrit en
    Juin 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 14
    Par défaut
    Je suis parfaitement d'accord. J'utilise personnelement Ajax pour communiquer avec le serveur, mais il se pose le dilèmne:

    - compatibilité, mais code non aux normes du w3c
    - code aux normes, mais risque de non compatibilité avec les anciens navigateurs ou ceux qui ont désactivé javascript

    La réponse dépends entièrement du choix du développeur. Elle n'est pas facile.

  14. #14
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 515
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 515
    Par défaut
    Effectivement.
    La solution la plus simple et dès qu'il y a un internaute connecté un script regarde ceux qui sont connecté c'est à dire entre NOW()-x mn. Bien évidement x est mise à jour à changement de page d'un internautes

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/08/2013, 15h28
  2. Savoir qui est connecté
    Par alaninho dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 08/01/2013, 19h34
  3. savoir qui est connecté ?
    Par ayoub2010 dans le forum Struts 1
    Réponses: 4
    Dernier message: 26/04/2007, 22h46
  4. comment savoir qui est connecté sur les db
    Par zoltix dans le forum Requêtes
    Réponses: 4
    Dernier message: 19/05/2006, 17h35
  5. Savoir qui est connecté
    Par Mat5725 dans le forum Langage
    Réponses: 2
    Dernier message: 18/10/2005, 14h06

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