Pages: 1
|

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
|

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é(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
|

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
|

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é(s)';
if($num>0)
{
echo ':<br />';
$i=0;
while($dn2 = mysql_fetch_array($dnns2))
{
$i++;
echo $dn2['pseudo'];
if($i<$num)
{
echo ',';
}
}
}
echo '.';
?>
Cordialement
|

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
|

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é(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
|

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+
|
Celui qui sacrifie sa liberté pour sa sécurité, ne mérite aucune des deux !

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
|

Membre
|
Bonjour Aglzime,
Bien vu l'erreur de frappe, le script fonctionne parfaitement,
Merci encore
Cordialement,
|

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
|

Membre
|
Je pense avoir trouvé l'erreur.
Je te tiens au courant
Merci pour tout
Philippe
|

Membre
|
ok ça fonctionne ,en effet j'avais 2 tables donc j'ai corrigé
merci
|

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
|

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
|

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
|