Créer un compte
Connexion

membres connnectés

Pour créer et répondre aux sujets, vous devez être connecté.
Pages: 1
Auteur Message
philippe
12/10/2010 à 12:14:54
philippe
Membre
Bonjour,
as tu le script complet sur "les membres connectés avec leur pseudo" car j'avoue que je ne comprends pas toutes les modifications que tu as faites sur la discussion avec aglzime
D'autre part je ne souhaite pas que les membres soient effacées de ma base.
J'ai déja un compteur sur mon site avec une table "utilisateurs" avec au moins ip timestamp pseudo login (grace à ton script) etc
Merci pour ton aide
Philippe

ybouane
16/10/2010 à 18:58:42
ybouane
Admin
Bonjour,
pour utiliser ce script, tu doit télécharger le script de l'espace membre:
Espace membre en php mysql

Tu doit créer une nouvelle table(cpt_connectes):
CREATE TABLE `cpt_connectes` (
  `pseudo` varchar(255) collate latin1_german2_ci NOT NULL,
  `timestamp` varchar(255) collate latin1_german2_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci;
Elle a deux champs, pseudo et timestamp. Ils ont tout les deux comme type varchar et une valeur(taille) de 255.
Cette nouvelle table sera vide pour commencer.

Ensuite, voici le script qui permet de connaitre le nombre de membres connectés et leur liste:
<?php
mysql_connect('localhost', 'username', 'password');
mysql_select_db('database');
if(isset($_SESSION['pseudo']))
{
        $dnns = mysql_fetch_array(mysql_query('select count(pseudo) as nb from cpt_connectes where pseudo="'.$_SESSION['pseudo'].'"'));
        if($dnns['nb']>0)
        {
                mysql_query('update cpt_connectes set timestamp="'.time().'" where pseudo="'.$_SESSION['pseudo'].'"');
        }
        else
        {
                mysql_query('insert into cpt_connectes (pseudo, timestamp) values ("'.$_SESSION['pseudo'].'", "'.time().'")');
        }
}
$times_m_5mins = time()-(60*5);
mysql_query('delete from cpt_connectes where timestamp<"'.$times_m_5mins.'"');
$dnns2 = mysql_query('select pseudo from cpt_connectes');
$num = mysql_num_rows($dnns2);
echo 'Il y a actuellement <strong>'.$num.'</strong> membre(s) connect&eacute;(s)';
if($num>0)
{
        echo ':<br />';
        $i=0;
        while($dn2 = mysql_fetch_array($dnns2))
        {
                $i++;
                echo $dn2['pseudo'];
                if($i<$num)
                {
                        echo ',';
                }
        }
}
echo '.';
?>
À moins que j'ai oublié quelque chose, ça devrait fonctionner.

Cordialement :)

Image
philippe
13/10/2010 à 15:17:27
philippe
Membre
Bonjour,
Merci pour ta réactivité.
Ce script fonctionne, mais j'ai noté 2 anomalies.
1/ Si le membre identifié ne se déconnecte pas de lui même ,( il quitte le site sans se delogguer), il reste afficher en tant que membre connecté.
2/ Si on se déconnecte volontairement , les membres identifiés n'apparaissent pas avec leur pseudo.
Merci de tes nouvelles

ybouane
16/10/2010 à 18:58:59
ybouane
Admin
Bonjour,
Pour ton premier point, Le membre sera automatiquement enlevé de la liste après 5 minutes. Tu peut modifier la durée dans la ligne 16 du code qui compte le nombre de connectés. Par exemple time()-(60*3); pour 3 minutes.

Et pour ton deuxième point, c'est une erreur dans le code, je l'ai corrigé(et édité mon ancien message), utilise donc celui là:
<?php
mysql_connect('localhost', 'username', 'password');
mysql_select_db('database');
if(isset($_SESSION['pseudo']))
{
        $dnns = mysql_fetch_array(mysql_query('select count(pseudo) as nb from cpt_connectes where pseudo="'.$_SESSION['pseudo'].'"'));
        if($dnns['nb']>0)
        {
                mysql_query('update cpt_connectes set timestamp="'.time().'" where pseudo="'.$_SESSION['pseudo'].'"');
        }
        else
        {
                mysql_query('insert into cpt_connectes (pseudo, timestamp) values ("'.$_SESSION['pseudo'].'", "'.time().'")');
        }
}
$times_m_5mins = time()-(60*5);
mysql_query('delete from cpt_connectes where timestamp<"'.$times_m_5mins.'"');
$dnns2 = mysql_query('select pseudo from cpt_connectes');
$num = mysql_num_rows($dnns2);
echo 'Il y a actuellement <strong>'.$num.'</strong> membre(s) connect&eacute;(s)';
if($num>0)
{
        echo ':<br />';
        $i=0;
        while($dn2 = mysql_fetch_array($dnns2))
        {
                $i++;
                echo $dn2['pseudo'];
                if($i<$num)
                {
                        echo ',';
                }
        }
}
echo '.';
?>

Cordialement :)

Image
philippe
14/10/2010 à 15:01:25
philippe
Membre
bonjour,
J'ai recopié ce script, mais du coup j'ai un nombre de membres connectées (3) qui correspond au nombre de membres enregistrés dans ma table mais pas loggué en temps réel (c'est moi qui les ai créé).
De plus le nom des membres n'apparait plus lorsqu'ils sont connectés en temps réel, bien que j'ai changé le temps (de 5 à 3 mn,s)
Merci pour ton aide

ybouane
16/10/2010 à 18:58:22
ybouane
Admin
Bonjour,
J'ai encore fait la même erreur dans mon code:0 , utilise celui là:
<?php
mysql_connect('localhost', 'username', 'password');
mysql_select_db('database');
if(isset($_SESSION['pseudo']))
{
        $dnns = mysql_fetch_array(mysql_query('select count(pseudo) as nb from cpt_connectes where pseudo="'.$_SESSION['pseudo'].'"'));
        if($dnns['nb']>0)
        {
                mysql_query('update cpt_connectes set timestamp="'.time().'" where pseudo="'.$_SESSION['pseudo'].'"');
        }
        else
        {
                mysql_query('insert into cpt_connectes (pseudo, timestamp) values ("'.$_SESSION['pseudo'].'", "'.time().'")');
        }
}
$times_m_5mins = time()-(60*5);
mysql_query('delete from cpt_connectes where timestamp<"'.$times_m_5mins.'"');
$dnns2 = mysql_query('select pseudo from cpt_connectes');
$num = mysql_num_rows($dnns2);
echo 'Il y a actuellement <strong>'.$num.'</strong> membre(s) connect&eacute;(s)';
if($num>0)
{
        echo ':<br />';
        $i=0;
        while($dn2 = mysql_fetch_array($dnns2))
        {
                $i++;
                echo $dn2['pseudo'];
                if($i<$num)
                {
                        echo ',';
                }
        }
}
echo '.';
?>
Et quand tu dis que tu a enregistré les membres, est ce que tu a ajouter des champs dans la table cpt_connectes? Parce que c'est la table "utilisateurs" qui doit contenir, les membres. La table cpt_connectes c'est la table du compteur et non pas la table qui contiens la liste des utilisateurs.

Cordialement :)

Image
philippe
15/10/2010 à 10:25:28
philippe
Membre
Bonjour,
Je n'utilise pas la table "utlisateurs" dans cet affichage.
J'ai bien créé "cpt_connectes".
je viens de copier ton dernier script, et miracle les membres inscrits s'affichent soit 3 actuellement enregistrés dans la table cpt_connectes.
Le seul problème maintenant c'est qu'ils ne devraient s'afficher UNIQUEMENT que lorsqu'ils sont loggués en temps réel -/+ 3 mns
Merci
A+ :)

Aglzime
15/10/2010 à 16:53:02
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux ! Aglzime
Membre
Attention à une erreur :
Je vois dans le code ci-dessus une erreur de frappe, partie SQL:
Change "mysql_query('detete... " par "mysql_query('delete..." ,
Donc ce n'est pas étonnant si le statut des membres reste toujours "connecté" !!!
Cordialement

philippe
15/10/2010 à 17:14:17
philippe
Membre
Bonjour Aglzime,
Bien vu l'erreur de frappe, le script fonctionne parfaitement,
Merci encore
Cordialement,

philippe
15/10/2010 à 19:56:02
philippe
Membre
J'ai parlé trop vite ................
En effet le test effectué est de m'inscrire sur 2 logs Différents.
Dans ce cas l'enregistrement se fait sans pb, et l'affichage correspond bien au nbre de connecté = au nbre d'enregistrement d ans la table.
Cependant lorsque tu quittes la session, et que tu te reconnectes en faisant "me connecter", le scrpit comprend que tu as les bons log mais ne t'inscrit pas dans la table donc n'affiche plus le nombre de connecté en temps réel.
Je pense qu'il faut une table qui enregsitre tous les membres inscrits et que le temps de connexion avec le time stamp doit se calculer avec le temps de connection
Mais là je ne sais pas faire
Bon j'espère avoir été clair
Merci pour votre aide
philippe

philippe
18/10/2010 à 10:08:44
philippe
Membre
Je pense avoir trouvé l'erreur.
Je te tiens au courant
Merci pour tout
Philippe

philippe
20/10/2010 à 17:08:10
philippe
Membre
ok ça fonctionne ,en effet j'avais 2 tables donc j'ai corrigé
merci

philippe
20/10/2010 à 21:51:07
philippe
Membre
comment améliorer le script pour que le membre connecté soit identifié comme logué immédiatement, sans avoir la contrainte de se connecter systématiquement
merci
philippe

ybouane
23/10/2010 à 17:21:57
ybouane
Admin
Bonjour,
Il faudra utiliser les cookies, mais le problème, c'est que tes autres codes ne fonctionneront pas, car ils sont faits pour fonctionner avec les sessions uniquement.

Cordialement :)

Image
endymionn
12/07/2012 à 13:04:23
endymionn
Membre
Bonjour, ce code PHP récupère les données et les affiches, or pour qu'il y a ait des données (le nom des membres...) dans la table il faut un script dans la page de connexion, non ??
Tu dis qu'il faut utiliser ton script téléchargeable mais si je ne l'utilise pas, je fais comment ??
Merci.

Pages: 1