Accueil
Forums
Turoriaux
Inscription
Connexion
Fil RSS
Bienvenue invité !
Samedi 22 Novembre 2008

[Résolu] Comment afficher les membres connecté?



1 2
Auteur Message
> Posté le : 16/09/2008 17h57
Aucun avatar


Groupe : Membres
Messages : 70

Bonjours.

Après mainte essaies en vain, je me permet de poster ce topic, afin de connaitre le moyen d'afficher la liste des membres connectés.

Merci de votre aide

PHP Dev en force 
> Posté le : 16/09/2008 19h07
Avatar de lbeetls01


Groupe : Admins
Messages : 2070

Salut,
Il te suffit de créer une table "connectes" avec l'IP du visiteur, la date de la dernière "connexion" (la dernière fois qu'il a visité une page), l'ID du membre et tout ce que tu veux connaître de lui.
Ensuite sur toutes tes pages tu vérifie si l'adresse IP du visiteur est déjà dans la base. Si non -> tu l'ajoute. Si oui -> tu modifie la date de la dernière connexion.
Ensuite tu supprime toutes les entrées dont la date de dernière connexion est supérieure à 5 minutes (par exemple).

Explication rapide, je ne sais pas si tu m'a compris ?


> Posté le : 17/09/2008 15h33
Aucun avatar


Groupe : Membres
Messages : 70

Si j'ai compris enfin je crois

Comment tu traiterais la date pour qu'elle corresponde à la dernière visite?

Merci

++

PHP Dev en force 
> Posté le : 17/09/2008 17h28
Avatar de lbeetls01


Groupe : Admins
Messages : 2070

Par ici : http://www.crea-paradise.com/tutorial-193-1-optimisation-date-heure.html

Enfait tu entre la date actuelle quand tu ajoute/met à jour le membre dans la table des connectés .


> Posté le : 17/09/2008 17h57
Aucun avatar


Groupe : Membres
Messages : 70

:rougi: oui c'est clair, j'y aurais pas pensé, malgrés que je l'ai fait pour afficher les derniers messages

Pff  bon je suis fatigué ça doit être pour ça

Au fait je peu pas utiliser ma table membres pour faire cela, en rajoutan un champ IP???

++  Merci

PHP Dev en force 
> Posté le : 17/09/2008 18h42
Avatar de lbeetls01


Groupe : Admins
Messages : 2070

Oui tu peux, si tu ne veux pas afficher les visiteurs (qui ne sont pas des membres) en ligne .
Il ne faut aussi pas oublier d'ajouter aussi un champ "connecte", qui prend 1 si le membre est connecté et 0 si il ne l'est pas.


> Posté le : 18/09/2008 18h41
Aucun avatar


Groupe : Membres
Messages : 70

Quand tu parle de champs, tu parle dans la BDD?

Si c'est cela, excuse moi de te demander cela, mais comment faire pour interagir sur ce champ?

Peu tu etre un peu plus clair STP, afin que je sache mieux quoi faire?

Je te remercie pour tout, ++

PHP Dev en force 
> Posté le : 18/09/2008 19h35
Avatar de lbeetls01


Groupe : Admins
Messages : 2070

Ajouter un champ dans la table de ta base de donnée. C'est parce qu'il faut que tu puisse différencier les membres connectés des membres non-connectés.
En fait au lieu d'ajouter/supprimer un enregistrement dans une table "connectes" quand un membre se connecte/est innactif tu modifie la valeur du champ "connecte" de ta table "membres" de 0 à 1 et vice-versa.

Tu me suis ?


> Posté le : 19/09/2008 15h27
Aucun avatar


Groupe : Membres
Messages : 70

Ok je vais tenter ceci, merci bien, si j'ai besoin au pire je te tiens au courant

++

PHP Dev en force 
> Posté le : 19/09/2008 19h19
Avatar de lbeetls01


Groupe : Admins
Messages : 2070

Ok, pas de problèmes .


> Posté le : 20/09/2008 15h25
Aucun avatar


Groupe : Membres
Messages : 70

Bon c'est pas faute d'avoir essayer

Je me tiens devant un dilemme!

J'arrive à d"finir si le membre est connecté ou pas, mais le hic, c'est que si il ferme son EI, j'ai toujours son nom afficher à l'écran, du fait qu'il ne s'est pas déconnecté.

Bin je joins mon code, déjà pour voir si c'est ok, ensuite si tu peu me dire comment faire pour connaitre l'état physique d'un membre? (en ligne ou horsligne)

Merci
++

on code:

Code PHP:
<?php
$connect="oui";
$verifconnect = web_query('SELECT * FROM membres WHERE connecte="'.$connect.'"');
while ($donnee = mysql_fetch_array($verifconnect))
{
if ($donnee['connecte']=="oui")
{
if ($donnee['groupe']=="admin")
{
echo ('<a style="color:#ff0000;font-weight:bold;" href="index.php?name=voirprofil&login=');
echo $donnee['login']; echo ('">');
}
if ($donnee['groupe']=="moderateur")
{
echo ('<a style="color:#00ff00;font-weight:bold;" href="index.php?name=voirprofil&login=');
echo $donnee['login']; echo ('">');
}
if ($donnee['groupe']=="membre")
{
echo ('<a style="color:#0000ff;font-weight:bold;" href="index.php?name=voirprofil&login=');
echo $donnee['login']; echo ('">');
}
echo $donnee['login'];
echo '</a>';
echo ' ';
}
if ($donnee['connecte']="non")
{
echo '';
}
}
?>

PHP Dev en force 
> Posté le : 20/09/2008 20h29
Avatar de Cheaterman


Groupe : Membres
Messages : 270

La réponse est : tu ne peux pas.

La solution est : il faut un "timelock" après lequel l'utilisateur est automatiquement déconnecté. Cinq minutes par exemple.
> Posté le : 20/09/2008 20h34
Avatar de lbeetls01


Groupe : Admins
Messages : 2070

Il faut que tu fasse en haut de toutes tes pages une requête du style :
Code PHP:
<?php
 
$timestamp_5min=time() - (60 * 5);
query("UPDATE membres SET connecte = 'non' WHERE connecte = 'oui' AND dateDerniereConnexion<". $timestamp_5min);
 
?>


En fait à chaque chargement d'une page il va déconnecter les membres qui ne sont plus actifs depuis au moins 5 minutes.
Si tu as utilisé un champ int pour dateDerniereConnexion, sinon si tu as utilisé un champ de type DATETIME il faudra faire une autre manipulation pour récupérer la date d'y a 5 minutes =).


> Posté le : 20/09/2008 20h54
Avatar de Cheaterman


Groupe : Membres
Messages : 270

Heu, le dernier connecté ne sera jamais déconnecté avec ça, si ?
> Posté le : 20/09/2008 22h37
Avatar de ProgDez


Groupe : Modérateurs
Messages : 145

Non, mais justement qui va aller voir que personne n'est connecté si il n'y a personne pour charger la page donc pas vraiment gênant


Projets en cours:
- Olympe-Network (hébergement gratuit et sans pub)
- ProgDez NetWork's - Mon PortFolio / Blog perso
- Quote-me.fr - un peu de détente ça vous dit ?
> Posté le : 21/09/2008 00h47
Avatar de rocawear


Groupe : Membres
Messages : 353

Ca serais mieux de vérifier avec le timestamp si le membre a ete actif dans les 5 dernière minutes.

si oui c'est qu'il est connecté sinon il est pas connecté

=> Ancien modérateur sur :

> Posté le : 21/09/2008 16h57
Aucun avatar


Groupe : Membres
Messages : 70

Oui je vois ce que vous voulez dire.

En vrai la solution de beetls01 et rocawear  me parait correct, c'est a dire utiliser un timestanp.

Enfin je pense ça devrai le faire.

Bon je vais tenter ceci, je vous tiens au courant.

Merci à vous en tout cas.

++

PHP Dev en force 
> Posté le : 21/09/2008 17h27
Avatar de lbeetls01


Groupe : Admins
Messages : 2070

Citation: Cheaterman
Heu, le dernier connecté ne sera jamais déconnecté avec ça, si ?


Oui, mais bon comme l'a dit ProgDez c'est pas trop gênant vu qu'il n'y aura personne pour le voir .


> Posté le : 22/09/2008 15h13
Aucun avatar


Groupe : Membres
Messages : 70

Bon, je sais que je suis chiant.

Ton code marche très bien lbeetls01, mais le hic, c'est que il déconnecter même les membres connectés.

Code PHP:
$datea=time();
$timestamp_5min = $datea - (300);
$timelimite = $timestamp_5min - $datea;
web_query('SELECT * FROM membres WHERE lastdateconnect<="'.$timelimite.'"');


C'est une ébauche de ce que j'ai tenter, mais peu importe la tournure, le faite est qu'il va bien déconnecter le membre, mais même les connectés.

En gros, est-ce-que quelqu'un aurais un script pour pouvoir afficher uniquement les membres réellement "en lignes"?

Merci de m'aider, c'est cool.

Dans l'espoir d'y arriver ++ .


PHP Dev en force 
> Posté le : 20/10/2008 18h19
Aucun avatar


Groupe : Membres
Messages : 70


PHP Dev en force 
> Posté le : 22/10/2008 09h27
Avatar de lbeetls01


Groupe : Admins
Messages : 2070

Il déconnecte le membre, mais si il est vraiment connecté ça va le reconnecter =).
Ça marche très bien, c'est le système utilisé sur Crea-paradise...

Ça serait encore moins fiable si tu fait un système qui détecte si il quitte la page, ou le navigateur, car il suffit qu'il plante ou quoi que ce soit d'inattendu et il reste connecté à jamais =).


> Posté le : 22/10/2008 14h14
Avatar de Drahl


Groupe : Membres
Messages : 134

Mais ça marche qui si il y a un coockie de connexion automatique lbeetls01, non ?
> Posté le : 22/10/2008 14h16
Avatar de lbeetls01


Groupe : Admins
Messages : 2070

Non, même sans cookie ça marche .
Il vérifiejuste  le timestamp qui se trouve dans la base de donnée et qui a été enregistré lors du chargement d'une page.


> Posté le : 01/11/2008 15h54
Aucun avatar


Groupe : Membres
Messages : 70

Je ni arrive plus, enfin, j'arrive a refaire le principe, mais je n'arrive pas a faire le code de mis a jour dans chaque page, en fait, soit ça déconnecte tout le temps, soit non.

Pourriez vous, s.v.p, m'indiquer tout ce que doit contenir une table permettant de déconnecter automatiquement, tous les membres qui ne sont pas actifs depuis 10 minutes, et les reconnecter, si jamais ils étaient sur un sujet (par exemple)

En fait, pourriez vous m'indiquer le meilleur moyen d'arriver a faire ce code, sans pour autant le faire, pour que je puis mi essayer, en ayant les objectifs à faire.

Merci @++

PHP Dev en force 
> Posté le : 01/11/2008 18h42
Avatar de lbeetls01


Groupe : Admins
Messages : 2070

Peux-tu nous donner ton code, pour qu'on puisse voir ce qui cloche ?
Parce que pour la table des connectés tu as tout ici, ici et ici.

EDIT :
Si jamais voici la structure de la table des connectés pour Crea-paradise (en simplifié) :
Code SQL:
CREATE TABLE `connectes` (
  `ip` varchar(50) NOT NULL DEFAULT '',
  `timestamp` bigint(25) NOT NULL DEFAULT '0',
  `useragent` varchar(200) NOT NULL DEFAULT '',
  `idmembre` int(5) NOT NULL DEFAULT '0',
  KEY `ip` (`ip`)
) ENGINE=MyISAM;


Voici la procédure à exécuter sur TOUTES tes pages pour ajouter/enlever les connectés automatiquement :
      1. Tu fait une requête qui va supprimer tous les connectés avec un timestamp datant de plus de 5 minutes.
      2. Tu vérifie si l'IP de l'utilisateur (celui qui visite la page actuellement) est déjà dans la table connectes.
            2.1. Si il y est déjà tu met juste à jour le timestamp d'après l'IP dans la table des connectés.
            2.2. Si il n'y est pas encore tu l'ajoute à la table, si c'est un membre tu met son ID dans le champ idmembre, sinon tu met 0.

A la connexion d'un membre :
      Tu met à jour le timestamp et le champ idmembre d'après l'IP dans la table connectes.

Déconnexion d'un membre :
      Tu met à jour le timestamp et tu met le champ idmembre à 0 d'après l'IP dans la table connectes.

Voilà, j'espère avoir pu t'éclairer =p.
Si tu ne comprends pas bien quelque chose ou que tu as encore des problèmes n'hésite pas à demander .


1 2