Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/05/2006, 10h15   #1
Membre extrêmement actif
 
Avatar de cortex024
 
Inscription : avril 2005
Messages : 1 244
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 244
Points : 997
Points : 997
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
cortex024 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2006, 10h43   #2
Membre actif
 
Inscription : novembre 2003
Messages : 236
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : novembre 2003
Messages : 236
Points : 159
Points : 159
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
Dokho1000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2006, 11h31   #3
Membre extrêmement actif
 
Avatar de cortex024
 
Inscription : avril 2005
Messages : 1 244
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 244
Points : 997
Points : 997
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?
cortex024 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2006, 11h44   #4
Membre actif
 
Inscription : novembre 2003
Messages : 236
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : novembre 2003
Messages : 236
Points : 159
Points : 159
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
Dokho1000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2006, 11h51   #5
Membre extrêmement actif
 
Avatar de cortex024
 
Inscription : avril 2005
Messages : 1 244
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 244
Points : 997
Points : 997
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
cortex024 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2006, 12h21   #6
Membre actif
 
Inscription : novembre 2003
Messages : 236
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : novembre 2003
Messages : 236
Points : 159
Points : 159
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.
Dokho1000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2006, 16h22   #7
Membre extrêmement actif
 
Avatar de cortex024
 
Inscription : avril 2005
Messages : 1 244
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 244
Points : 997
Points : 997
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).
cortex024 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2006, 17h25   #8
Membre confirmé
 
Inscription : août 2003
Messages : 225
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2003
Messages : 225
Points : 225
Points : 225
Envoyer un message via MSN à Steph82
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.
Steph82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2006, 19h23   #9
Membre actif
 
Inscription : novembre 2003
Messages : 236
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : novembre 2003
Messages : 236
Points : 159
Points : 159
ouep tu pouvais adapater ce que je t'ai dit.
Pense au bouton resolut
Dokho1000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2006, 19h57   #10
Membre confirmé
 
Avatar de spilliaert
 
Inscription : septembre 2005
Messages : 270
Détails du profil
Informations personnelles :
Âge : 21
Localisation : Belgique

Informations forums :
Inscription : septembre 2005
Messages : 270
Points : 227
Points : 227
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
spilliaert est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2006, 21h17   #11
Membre actif
 
Inscription : novembre 2003
Messages : 236
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : novembre 2003
Messages : 236
Points : 159
Points : 159
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.
Dokho1000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2006, 21h47   #12
Membre confirmé
 
Avatar de spilliaert
 
Inscription : septembre 2005
Messages : 270
Détails du profil
Informations personnelles :
Âge : 21
Localisation : Belgique

Informations forums :
Inscription : septembre 2005
Messages : 270
Points : 227
Points : 227
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?
spilliaert est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2006, 23h31   #13
Membre actif
 
Inscription : novembre 2003
Messages : 236
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : novembre 2003
Messages : 236
Points : 159
Points : 159
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
Dokho1000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 16h06   #14
Membre extrêmement actif
 
Avatar de cortex024
 
Inscription : avril 2005
Messages : 1 244
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 244
Points : 997
Points : 997
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
cortex024 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 09h41   #15
Membre extrêmement actif
 
Avatar de cortex024
 
Inscription : avril 2005
Messages : 1 244
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 244
Points : 997
Points : 997
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 :
YEAR(FROM_DAYS(1 + TO_DAYS(CURDATE()) - TO_DAYS(birthday))) as age
cortex024 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 09h58   #16
Membre à l'essai
 
Inscription : juin 2004
Messages : 37
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 37
Points : 20
Points : 20
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)
Fluckysan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 10h03   #17
Membre extrêmement actif
 
Avatar de cortex024
 
Inscription : avril 2005
Messages : 1 244
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 244
Points : 997
Points : 997
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
cortex024 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 14h41   #18
Membre à l'essai
 
Inscription : juin 2004
Messages : 37
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 37
Points : 20
Points : 20
Comment stockes-tu le Timestamp dans ta BD (quelle méthode) et quelle est la forme du Timestamp dans ta BD ?
Fluckysan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 14h51   #19
Membre extrêmement actif
 
Avatar de cortex024
 
Inscription : avril 2005
Messages : 1 244
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 244
Points : 997
Points : 997
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".
cortex024 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 15h34   #20
Membre à l'essai
 
Inscription : juin 2004
Messages : 37
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 37
Points : 20
Points : 20
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))
Fluckysan est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h27.


 
 
 
 
Partenaires

Hébergement Web