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 :

Savoir si une personne est en ligne...


Sujet :

Langage PHP

  1. #1
    Membre extrêmement actif Avatar de cortex024
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 301
    Points : 1 119
    Points
    1 119
    Par défaut Savoir si une personne est en ligne...
    Bonjour,

    je suis sur le développement d'un site avec membres. Lorsqu'une personne consulte le profil d'un membre, j'aimerai qu'il puisse savoir si le membre est en ligne ou pas. Ceci est fait sur ce forum-ci, et sur pas mal d'autres sites.

    Comment pourrais je faire?

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Hello,

    Pour faire cela tu devras utiliser les session, si tu l as jamais fais regarde d'abord un tuto.

    Donc pour faire cela quand un membre se connecte a ton site tu ouvre une session et tu met dans un nouveau champs timestamp l heure a laquelle il sait connceter.
    Et toutes les x minutes tu verifies les membres qui sont connecté ou pas et tu fais un update de la bdd.

    Voila a peut pres l'idee

  3. #3
    Membre extrêmement actif Avatar de cortex024
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 301
    Points : 1 119
    Points
    1 119
    Par défaut
    Citation Envoyé par Dokho1000
    Hello,

    Pour faire cela tu devras utiliser les session, si tu l as jamais fais regarde d'abord un tuto.

    Donc pour faire cela quand un membre se connecte a ton site tu ouvre une session et tu met dans un nouveau champs timestamp l heure a laquelle il sait connceter.
    oui j'ai déjà utilisé les sessions, mais uniquement pour permetre d'accéder au reste du site.
    Il faut obligatoirement avoir un champ en plus dans la base de donnée? ne pourrait on pas faire une vérification sur toutes les sessions ouvertes?

    Citation Envoyé par Dokho1000
    Et toutes les x minutes tu verifies les membres qui sont connecté ou pas et tu fais un update de la bdd.
    Donc oui apparement tu sais vérifier qui est connecté ou pas. c'est surtout là l'important. Comment fait on cela?

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Oui tu es obliger d'ajouter un champs ds la bdd moi je dirais meme 2 avec un champs timestamp et l autre online que tu met a 1 ou 0 en fonction si il est la ou pas.

    Quand tu verifie tu te connecte la bdd et pour chaque membres tu regarde le timestamp si tu verifie toutes les 5 minutes tu fais l heure actuel - 5 min (convertit en timestamp) tu compare avec l autre si dans la bdd il est plus grand c'est que il est on-line et donc tu l affiche.

    et a la fin tu fais un update de l'utilisateur qui a executer ta page en remettant le timestamp a l heure actuel ainsi tu evite les zombi a savoir les personne qui sont connecter a ton site mais afk.

    voila j'espere que j'ai pas ete trop flou

  5. #5
    Membre extrêmement actif Avatar de cortex024
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 301
    Points : 1 119
    Points
    1 119
    Par défaut
    Sur le principe, je vois comment faire +-, mais c'est au niveau pratique dans mes pages que je veux surtout de l'aide. Je trouve des sources sur le net pour avoir le nombre de personne en ligne,... mais pas pour ce genre de chose.

    - au moment ou quelqu'un se connecte et/ou charge une page aller modifier l'heure timestamp dans la db
    - vérifier toutes les x minutes le timestamp des membres et ainsi influer sur l'etat connect& 1 ou 0

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    En fait c'est pas toi qui dit de verifier toutes les x minutes.

    par exemple tu fais une page header avec la verification de qui est en ligne.
    tu fais un footer avec les membres connecté grace au header.

    et dans ta page index tu fais un require header et footer.

    ainsi chaque que qlqun se connecter ou change de page il y a une mise a jours ds la db.

    evidement tu dois faire en sorte qu'il y ai tjs le header ds toutes tes pages.
    Moi en general je fais en sorte que toutes mes page se charge ds mon index comme ca je le fais que une fois.

  7. #7
    Membre extrêmement actif Avatar de cortex024
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 301
    Points : 1 119
    Points
    1 119
    Par défaut
    je ne cherche paz à avoir une liste des personnes connectées.


    ce que je veux, c'est lorsqu'une personne consulte la fiche d'un membre, qu'il y aie qqch qui indique si il est en ligne (image de lumière verte/rouge, ou texte "connecté"/"déconnecté", ou...).

    Ah, donc c'est bien ce qui me semblait, ce n'est pas une fonction qui vérifie toutes les x minutes. c'est mettre ce code la sur une page qui se charge à chaque chargement de page (index avec require pour chaque autre page suivant le menu choisi dans mon site).

  8. #8
    Membre actif
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 235
    Points : 269
    Points
    269
    Par défaut
    Citation Envoyé par cortex024
    je ne cherche paz à avoir une liste des personnes connectées.


    ce que je veux, c'est lorsqu'une personne consulte la fiche d'un membre, qu'il y aie qqch qui indique si il est en ligne (image de lumière verte/rouge, ou texte "connecté"/"déconnecté", ou...).
    Ben c'est le même principe, sur la fiche du membre, tu as forcémment une requete de type SELECT pour afficher ses données. Ben la tu rajoutes ton champ dans la requete pour savoir s'il est connecté. S'il est a 1, tu affiches un bouton vert, sinon un bouton rouge par exemple.

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    ouep tu pouvais adapater ce que je t'ai dit.
    Pense au bouton resolut

  10. #10
    Membre averti Avatar de spilliaert
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 268
    Points : 307
    Points
    307
    Par défaut
    Heu, pour info;

    Désolé, je n'ai pas compris et ça m'intéresse aussi;
    quand le membre se connecte, on stocke le timestamp actuel dans une bdd, donc on aura le timestamp du moment où il s'est connecté ? comment savoir si il est en ligne ?

    désolé si je vous embête, mais je tiens à comprendre,
    d'avance, merci

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Ben on met le timestamp actuel et on met un champs present a 1 pour dire qu il est on line.
    A chaque fois que la page est chargee par un client on verifie tous les timestamp à 5 minutes pres pour savoir qui est encore en ligne et on raffraichis le timestamp du gars qui vient de charger la page voila.

  12. #12
    Membre averti Avatar de spilliaert
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 268
    Points : 307
    Points
    307
    Par défaut
    ok j'ai compris, merci, donc, ceci suggère qu'un membre, pour être "online", doit charger une page toutes les 5 mins ? c'est bien ça?

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    ouep, si il est inactif pendant plus de 5 minutes il sera considere comme hors line mais tu peux definir un temps plus ou moin long a toi de voir.
    En sachant que plus le temps est court plus ta supposition des membres online est correct mais augement la charge du serveur.

    Faut choisir un bon compromis

  14. #14
    Membre extrêmement actif Avatar de cortex024
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 301
    Points : 1 119
    Points
    1 119
    Par défaut
    Rebonjour,

    Je vais tester tout ceci.
    J'ai ajouté un champ à la base de donnée et mis les quelques lignes de code pour faire un update de la DB à chaque chargelent de page sur la page index.
    Cela fonctionne, c'est la première étape.
    Maintenant il me reste à savoir comparer ce champ datetime avec l'heure courante pour voir si il y a plus de 5 minutes ou pas...

    Pouvez vous m'aidez au niveau du code?

    Merci

  15. #15
    Membre extrêmement actif Avatar de cortex024
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 301
    Points : 1 119
    Points
    1 119
    Par défaut
    Bonjour,

    j'ai ceci par exemple pour avoir un age par différence entre 2dates. Ca doit être du même genre pour trouver si il y a plus de 5 minutes entre un datetime et l'heure actuelle...

    Personne pour m'aider??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    YEAR(FROM_DAYS(1 + TO_DAYS(CURDATE()) - TO_DAYS(birthday))) as age

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 37
    Points : 30
    Points
    30
    Par défaut
    Salut,
    Tu peux récupérer le timestamp que tu as dans ta BD et la comparer avec un time() (si tu as stocker la date avec cette méthode)

  17. #17
    Membre extrêmement actif Avatar de cortex024
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 301
    Points : 1 119
    Points
    1 119
    Par défaut
    Citation Envoyé par Fluckysan
    Salut,
    Tu peux récupérer le timestamp que tu as dans ta BD et la comparer avec un time() (si tu as stocker la date avec cette méthode)
    Ah bien

    Je sais que je dois faire ca , je demande justement le code pour y arriver. Mais pour l'heure courante et le time() je n'utilise pas cela.

    J'ai un champ timestamp dans la BD qui contient la date et l'heure de la dernière action. je dois la comparer avec l'heure courante pour voir si il y a plus de 5 minutes ou pas pour considérer ou non la personne comme en ligne.

    Merci

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 37
    Points : 30
    Points
    30
    Par défaut
    Comment stockes-tu le Timestamp dans ta BD (quelle méthode) et quelle est la forme du Timestamp dans ta BD ?

  19. #19
    Membre extrêmement actif Avatar de cortex024
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 301
    Points : 1 119
    Points
    1 119
    Par défaut
    Citation Envoyé par Fluckysan
    Comment stockes-tu le Timestamp dans ta BD (quelle méthode) et quelle est la forme du Timestamp dans ta BD ?
    "ON UPDATE CURRENT TIMESTAMP", c'est mis à jour à chaque action sur la base de donnée automatiuement.

    donc de format timestamp normal, "yyyy-mm-jj hh:mm:ss".

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 37
    Points : 30
    Points
    30
    Par défaut
    Je pense que tu peux comparer les 2 dates en utilisant date()
    --- Récupère le timestamp de ta BD (via un SELECT)
    --- Compare le avec le timestamp actuel : strtotime(date(Y-m-d h:i:s))

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [WD17] Savoir si une Imprimante est en ligne
    Par davcaz dans le forum WinDev
    Réponses: 3
    Dernier message: 05/07/2013, 12h46
  2. Savoir si une personne est connectée ou non
    Par MANU_2 dans le forum Langage
    Réponses: 5
    Dernier message: 17/03/2008, 14h06
  3. Savoir si une connection est établie sur un port
    Par Malone dans le forum Web & réseau
    Réponses: 3
    Dernier message: 06/12/2003, 08h22
  4. Comment savoir qu'une fonction est standard ?
    Par D[r]eadLock dans le forum C
    Réponses: 5
    Dernier message: 24/03/2003, 14h42
  5. [VB6] [Impression] Savoir si une imprimante est installée
    Par Norm59ttp dans le forum Installation, Déploiement et Sécurité
    Réponses: 2
    Dernier message: 19/12/2002, 09h29

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