Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
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 13/06/2011, 15h05   #1
Invité2
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Par défaut qui est en ligne ?

Bonjour à tous,

Je suis en train de coder un mini chat.
Pour savoir qui est en ligne, j'ai créée une table "connected_users".
Cette table contient les champs suivants : id(auto increment),name,ip,sessionId(unique),lasTime.

Lorsque que l'utilisateur se connecte, cela ajoute une ligne dans cette table.
Lorsque l'utilisateur se déconnecte, cela supprime la ligne dont l'id de sa session == sessionId.

le problème, c'est que l'utilisateur ne va pas forcement se déconnecter, il peut tout simplement fermer le navigateur. Donc lorsqu'il va vouloir se reconnecter, il y aura un refus puisqu'il sera encore vu comme déjà connecté.

Quelqu'un a une idée ?

Merci.
  Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2011, 15h44   #2
Membre Expert
 
Avatar de Doksuri
 
Tiger Scott
Développeur Web
Inscription : juin 2006
Messages : 1 246
Détails du profil
Informations personnelles :
Nom : Tiger Scott
Âge : 42

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2006
Messages : 1 246
Points : 1 504
Points : 1 504
tu peux ajouter un system de timeout, qui le supprimerait de la table au bout de Xmin d'inactivite

et en parallele, tu peux ajouter un champ real_user, qui serait compose du md5(version du navigateur + os + ce que tu veux)
=> ce qui permet d'etre presque sur d'avoir un vrai utilisateur unique

ainsi, si le pseudo est deja en ligne, tu verifies le md5(version du navigateur + os + ce que tu veux)...si c'est le meme, a 99.99%, c'est le meme utilisateur et donc, tu force sa connexion, sinon, c'est que c'est quelqu'un d'autre, et faudra qu'il attende le timeout...

c'est une piste.. a savoir s'il en exite d'autres mieux....
__________________
La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

N'oubliez pas le Le tag resolu.

Need_!
Doksuri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 09h01   #3
Invité2
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Merci Doksuri,

Je me demande si je ne vais pas faire quelque chose de similaire à msn messenger.
Si le navigateur plante, je me reconnecte. Lors de la connexion, cela va supprimer la l'ancienne ligne de la table et en créer une nouvelle.
Si le navigateur a planté, l'utilisateur ne verra rien. par contre, si l'utilisateur n'as pas planté, cela lui enverra un message lui disant qu'il est connecté ailleurs.

Vous en pensez quoi ?

Merci
  Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 10h09   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
envoie un événement de déconnexion avec onbeforeunload, ou fait un système de ping
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 12h47   #5
Invité2
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Merci stealth (encore une fois )

J'ai fais une fonction de déconnexion avec .unload() de jQuery.
Pour ceux que cela intéressent, dans les options de .ajax() sur un unload(), mettre le "async" à "false" pour que cela fonctionne.

si en cas de plantage du navigateur le unload ne fonctionne pas, je vais quand même faire une fonction qui vas détecter la dernière action de l'utilisateur comme me l'avait proposé Doksuri.

Merci à vous deux.
  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 00h58.


 
 
 
 
Partenaires

Hébergement Web