1 Dernière modification par kikispas (22-03-2009 13:25:04)

Sujet : Problème déconnxion de mon site

Coucou alors j'ai un petit soucis au niveau de mon algorithme voilà ce que je voudrais:

Récupérer la liste des gens connectés à mon site. J'ai fait un truc basique:
-quand un utilisateur se connecte, je passe la variable 'connecté' à 1 dans la table de l'utilisateur
-quand il clique sur deconnecté je la repasse à 0

Le soucis c'est que ca marche très moyennement... Si l'utilisateur ferme son navigateur (ferme la session) ou détruit le cookie du sessid bah il est pas connecté mais dans la base de donnée il l'est toujours...

C'est quoi la bonne méthode pour voir qui est connecté?

2

Re: Problème déconnxion de mon site

Et bien vu que le protocole HTTP fonctionne en mode 'déconnecté' (comprendre: 1 requete = 1 connexion qui se ferme après réception de la réponse), il n'y a pas de vraie bonne méthode pour voir qui est connecté.
Ta solution avec les sessions se rapproche de la solution idéale malgré tout, le seul problème étant que tu doives implémenter un 'timeout': si la personne n'a pas mis à jour sa session depuis X minutes alors, on assume qu'il n'est plus connecté. Pour arriver au plus proche de la réalité, tu pourrais écrire un code en Ajax qui ferait une requête toutes les 10 secondes. Comme ca tu sais que si la personne n'a pas fait de requête depuis plus de 10 secondes, alors elle n'est plus connectée à ton site.

lesCigales.ORG sysadm1n
L'hébergeur qui sent bon la lavande - Un control panel qu'il est chouette - Viendez nous parler!
"All that is necessary for evil to triumph is for good men to do nothing."

Re: Problème déconnxion de mon site

Ok merci Toad smile

J'vais voir ce que je peux trouver, en cas de succès je posterai ma trouvaille, si ca peut en aider quelques uns...

Re: Problème déconnxion de mon site

tu peux faire un truc comme ca par exemple
$tps_cookie = 86400 * 30; // la durée d'un cookie est exprimée en seconde : 30jours = 60*60*24*30

Re: Problème déconnxion de mon site

infobarquee> Ce que je souhaite c'est que les autres membres puissent voir qui est en ligne. Je ne crois pas qu'un cookie puisse m'aider ici, à moins d'avoir mal comprit ce que tu veux que j'en fasse.

Sinon j'ai une autre méthode plus basique, dans mon header je place une fonction qui ajoute en base le timestamp actuel dans la fiche du membre et quand j'ai besoin de savoir si un tel est connecté, je regarde le timestamp de ce membre dans la base et je compare avec celui de l'instant présent. Si la défférence est superieur à 500 (à définir) le membre sera considéré comme déconnecté.

Par contre je sais pas si ca ne va pas surcharger les accèes à la base pour pas grand chose tongue

Re: Problème déconnxion de mon site

la plus part du temps, je prends exemple sur le forums, on se sert des cookies, qui récupèrent l'ip, la mettent des une bdd avec le timestamp.
après, à chaque action sur le forum (post, changement de page, etc...) renvoit dans la bdd le nouveau timestamp et ainsi de suite.
si le cookie est configuré pour X secondes et qu'il n'est pas remis à jour dans la bdd suite à une action, il y a deconnexion et l'ip du membre est retirée de la bdd.
cela permet d'afficher le membre.
en meme temps que l'ip et le timestamp, est inséré aussi l'id du membre qui elle ne change pas.
a partir de cette id, on interroge la bdd user pour afficher le login.
le cookie est composé de l'id du membre.

le fait de creer une bdd speciale users connectes est un avantage, cela permet aussi d'afficher le nb de visiteurs non inscrits sur le site et de connaitre l'ip de facon a voir le provider et le pays par la suite.

Re: Problème déconnxion de mon site

voila à quoi correspond le cookie de fluxbb
Name    forum_cookie
Value    a%3A2%3A%7Bi%3A0%3Bs%3A1%3A%222%22%3Bi%3A1%3Bs%3A32%3A%226659b3a000885eebc864a41832a3bfce%22%3B%7D

la bdd
Champ    Type    Interclassement    Attributs    Null    Défaut
user_id    int(10)         UNSIGNED    Non    1
ident    varchar(200)    latin1_swedish_ci        Non   
logged    int(10)         UNSIGNED    Non    0
idle    tinyint(1)            Non    0

l'affichage
user_id     ident     logged                      idle
2    infobarquee    1237745688              0

Re: Problème déconnxion de mon site

Ok c'est plus clair merci, mais j'pense utiliser la solution que j'ai brièvement expliqué plus haut. J'évite d'utiliser les cookies pour des raisons de sécurité mais je garde tout ca dans un coin d'ma tête wink

9

Re: Problème déconnxion de mon site

Niveau sécurité, je dirais que les cookies c'est un peu le top smile

lesCigales.ORG sysadm1n
L'hébergeur qui sent bon la lavande - Un control panel qu'il est chouette - Viendez nous parler!
"All that is necessary for evil to triumph is for good men to do nothing."

10

Re: Problème déconnxion de mon site

Sachant qu'un cookie est éditable je vois pas trop où c'est le top :s

Je préfère tout stocké coté serveur comme ca l'utilisateur n'y a pas accès...

J'ai connu des sites qui stockaient en clair le status (membre, admin, modo) de l utilisateur dans un cookie... Ok la c'est un autre soucis mais par principe j'évite les cookies.

Re: Problème déconnxion de mon site

si tu fais un truc comme ca dans les fichiers tu peux toujours editer le cookie mais ca servira a rien
if (!isset ($_COOKIE['id du membre code']) or $_COOKIE['id du membre code'] != $pass_user) {
echo"vous n'etes pas le bon utilisateur de ce compte.....bye bye votre ip est gardée en mémoire"}
else if{acces au compte}

12

Re: Problème déconnxion de mon site

Le but du cookie est de stocker l'identifiant de session et de le masquer dans l'url, pas de stocker toutes les informations sensibles concernant l'utilisateur, bien entendu.
Ici l'expression forum_cookie du forum fluxbb / punbb correspond aux cookies côté serveur, non pas client, sur le client le cookie contient uniquement un identifiant de session unique.

lesCigales.ORG sysadm1n
L'hébergeur qui sent bon la lavande - Un control panel qu'il est chouette - Viendez nous parler!
"All that is necessary for evil to triumph is for good men to do nothing."

13

Re: Problème déconnxion de mon site

La solution du timestamp dans la base de donnée me semble la meilleur.
Tu trouvera un tuto complèt la dessus : http://www.siteduzero.com/tutoriel-3-14 … ectes.html
C'est ce que j'ai utilisé pour mon site.