2010-10-24 7 views
0

J'ai créé un script de connexion pour mon site, les choses de la session ressemblent à ceci.[PHP] Comment compter les utilisateurs en ligne et les utilisateurs connectés, quelle méthode?

if($_SESSION['loggedin']=="Yes"){ 
//user online stuff 
} 

Pour tous les autres utilisateurs de la session est définie

$_SESSION['loggedin']=="No"; 

Comment puis-je afficher session active qui sont mis à oui ou non? devrais-je travailler avec des tables mysql et utiliser des crontabs? ou devrais-je compter les fichiers dans tmp (répertoire de session) sur Apache?

Quelles sont les meilleures méthodes et comment puis-je le faire?

+0

regardez la solution ici http://www.phpfreaks.com/forums/index.php/topic,223367.0.html?PHPSESSID=4ic49trgkmtq254en8a64svfs1 –

+0

Nombre de sessions actives ** N'EST PAS ** égal au nombre d'utilisateurs en ligne Parce que le but du délai d'attente de la session est tout à fait contraire: pour être sûr que l'utilisateur est ** hors ligne **. Faites votre temps d'attente plus proche d'une vraie vie - 5 ou 3 minutes. –

Répondre

1

Vous pouvez stocker les utilisateurs dans une base de données, avec leurs informations de connexion, et vérifier que chaque fois que vous souhaitez authentifier un utilisateur. C'est beaucoup plus sûr que d'utiliser simplement des variables de session pour s'authentifier.

Vous pouvez compter le nombre d'utilisateurs connectés en définissant un bit pour l'enregistrement de l'utilisateur lors de la connexion et en désactivant le bit lors de la déconnexion/de la session, et en comptant le nombre de ces bits activés pour voir combien de personnes sont connectées.

1

Le crontab n'est pas nécessaire ici. Vous pouvez stocker la date et l'heure de la dernière activité quelque part (base de données mysql?), Et utiliser select simple, ce qui indiquerait le nombre d'utilisateurs qui étaient actifs pendant un certain temps.

Cette table peut être utilisée pour le suivi côté serveur des utilisateurs connectés. Table peut également contenir des informations supplémentaires, comme l'adresse IP, X-Forwarded-For IP etc.

0

Si vous devez afficher les utilisateurs actuellement connectés, il est préférable d'utiliser une colonne dans votre table mysql suivre l'état de connexion actuel, et faire une demande périodique via un cronjob, et stocker cette information dans un fichier. Txt de sorte que vous pouvez faire la requête une seule fois pour tous les utilisateurs connectés et partager le résultat en l'incluant dans votre html rendu. L'autre méthode (lire à l'intérieur du dossier de stockage de session) est possible mais plus complexe et probablement moins efficace, bien que je n'ai pas fait de benchmarks. C'est juste très hacky.

Questions connexes