Bonsoir, j'ai cherché récemment comment faire pour voir les users en ligne, mais je ne trouve pas donc j'ajoute comme idée de tutoriels ne sachant pas le niveau de difficulté je cherche quelqu'un pouvant m'aider ;) Bonne soirée!

22 réponses


Lartak
Réponse acceptée

Je cherchais juste à voir si il avait des cookies, il avait pensé à tout les cas de figures, maitenant je sais qu'il n'utilise pas de cookies.

Son but dans sa demande est de lister les utilisateurs qui sont actifs sur le moment, un système de connexion persistante n'est pas le sujet de sa demande.

En PHP, il n'y a pas de moyen de savoir exactement.

Je pense que le meilleur moyen est d'avoir une Base De Données, resemblant à :

id             - id de la ligne, unsigned
user_ip        - IP de l'utilisateur
last_seen_time - datetime du dernier chargement de page de l'utilisateur
user_id        - id de l'utilisateur si tu as une BDD des utilisateurs, peut être vide si l'utilisateur ne s'est pas connecté à ton site, ligne optionnel

Et à chaque chargement de page :

  • Si il n'y a pas de ligne avec l'IP de l'utilisateur dans la BDD, on en créé une ;
  • Si il y a une ligne avec l'IP de l'utilisateur dans la BDD, on l'update (update la timedate de dernière vu) ;
  • On supprime les lignes qui sont plus vieilles que le temps que tu considères nécessaire pour voir l'utilisateur comme parti du site (sa peut dépendre du site, e.g: sur un site avec des articles, les utilisateurs vont passer plus de temps sur une page que sur un site d'annonce)

Tu pourrais même ajouter une colonne last_page_seen qui contiendrait la dernière page vu par l'utilisateur, pour, par exemple, pouvoir lister dans le footer de la page le nombre d'utilisateurs sur la page.

Pour récupérer l'IP, premier lien que j'ai trouvé.

Bonsoir.
Je suis d'accord avec Forever, il n'y a à ma connaissance, aucun moyen via PHP de lire toutes les sessions actives d'un site.
Malgrés cela, il existe plusieurs moyens de réaliser ce que tu demandes.

  • Via Base de données : dans la table listant les utilisateurs enregistrés, créer deux champs, par exemple online qui vaudrait 1 quand l'utilisateur est connecté et 0 lorsqu'il ne l'est pas, lorsqu'il se connecte définir le champ à 1 et le définir à 0 lorsqu'il se déconnecte, ensuite un champ last_activity qui serait en datetime dans lequel l'on met le dernier datetime de la dernière activité de l'utilisateur, comme par exemple le dernier affichage de page.
  • Via un fichier texte ou json (par exemple) qui sera généré (ou modifié) avec les mêmes informations proposées dans l'exemple de la base de données.

Pour ces deux exemples :

  • Si l'utilisateur est en ligne, la valeur de online est 1, il suffit donc de faire une recherche sur tous les utilisateurs qui ont cette valeur .
  • Pour que l'utilisateur ne soit pas hors-ligne, soit il n'est pas connecté et par conséquent la valeur de online est 0, soit le dernier datetime de last_activity est supérieur au délai que l'on considère que l'utilisateur est actif.

Il y a probablement d'autres manières de faire, comme avec nodejs par exemple, mais ces deux cas là sont les plus "simples" à coder.

Et que faire des utilisateurs qui n'ont pas de compte ? On les ignore ? :p

Et que faire des utilisateurs qui n'ont pas de compte ? On les ignore ? :p

Comment connaître le pseudo d'un utilisateur qui n'est pas en ligne ? :p
Pourquoi s'embêter pour un utilisateur qui ne veut pas s'inscrire sur un site ?
Je pars du principe qu'il veut lister les utilisateurs avec leurs pseudos et non juste le nombre d'utilisateurs, par conséquent, c'est que les utilisateurs à lister sont inscrit sur le site.

C'est vrai, j'ai présumé qu'il voulait lister tout les utilisateurs de son site.

Merci pour votre aide, oui le but est d'afficher les utilisateurs inscrits connéctés.

j'ai trouvé une solution :
dans users j'met une colonne 'online' et quand la personne se connecte sa modif de 0 à 1.
0 = pas co
1 = connecté
Quand il se déconnecte sa change en 0.

Que signifie 'connecté' pour toi ?

cela signifie en ligne la personne qui est inscrite navigue sur le site

Mais tu stockes un cookie pour garder la personne en ligne ?

forever j'y connais rien ;(

Mais tu stockes un cookie pour garder la personne en ligne ?

S'il faisait une connexion persistante, il ne ferait pas un système pour savoir si la personne est connecté sur le site ou non.
Ne cherches pas à lui compliquer les choses.

S'il faisait une connexion persistante, il ne ferait pas un système pour savoir si la personne est connecté sur le site ou non.
Ne cherches pas à lui compliquer les choses.

Je cherchais juste à voir si il avait des cookies, il avait pensé à tout les cas de figures, maitenant je sais qu'il n'utilise pas de cookies.

j'vais donc essayer un système quand le joueur se connecte à l'éspace membre sa change la colonne ´online' à 1 et quand il va sur logout.php sa remet à 0

Es-tu encore connecté si tu fermes ton navigateur et que tu le re-ouvres ?

J'ai pas encore fais le système faut que trouve un solution pour ça ;(

Il faudra donc que tu modifies ton système de détection Connecté/Pas connecté.

Il faudra donc que tu modifies ton système de détection Connecté/Pas connecté.

Le but de sa demande est de lister les utilisateurs actifs sur le site à un instant T, donc utiliser un système de connexion persistante pour faire ce listing, serait contradictoire.
C'est pour cela que je lui ait proposé une manière de vérifier si l'utilisateur est toujours actif ou non.

C'est pour cela que je lui ait proposé une manière de vérifier si l'utilisateur est toujours actif ou non.

Et j'ai fait la même chose, mon ami.

quelqu'un pourrait essayer de faire ce système car j'arrive avec à débuter ;(

Je veux bien, MP sur IRC ?