Savoir qui est connecté

nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 - 4 juin 2008 à 18:44
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 - 5 juin 2008 à 16:15
Salut,

J'ai une table session qui contient tout les membres inscrits et j'ai une autre table connect qui contient tout les membres connectés ...
J'ai un code qui est censé afficher une image si le membre est connecté mais ça ne marche pas !

Mon code :

<?php
session_start();
if(!session_is_registered("User_Login") || !session_is_registered("User_Pwd"))
{
 print '<META HTTP-EQUIV= "refresh" CONTENT="0; URL = ../index.php?msg=Mauvais+Login+et/ou+Password+!">';
 exit;
}
?>
<?php include("../include/config.inc.php"); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>TS Secure CS Version 4.0 - Bienvenue <?php echo $_COOKIE['connect_login']; ?> !</title>
<link href="../design.css" rel="stylesheet" type="text/css">
</head>

  ----

    ,
 
  ----

    <?php include("include/index.php"); ?>,
         
   <table border="0" width="100%" cellpadding="0" cellspacing="0">
      ----

     , </td>
   
      ----

        ,
       
      ----

        <?php
   
  $db = mysql_connect("$sql_host", "$sql_user", "$sql_pass") or die(mysql_error());
  mysql_select_db("$sql_bdd",$db);

      
  $query  = "SELECT * FROM $tb_membres, $tb_connect";
  
  $result = mysql_query($query) or die (mysql_error()); ?>
 
  
  
  
   <center><table width="95%" border="1" cellpadding="0" cellspacing="0" bordercolor="#B4C4CB">
   ----

  , Avatar </td>
   Pseudo,
   Age,
   Sexe,
   Online,
   
     <?php
     while ($row = mysql_fetch_array($result))
 {

   $login = $row[login]; ?>
   ----

     <?php if ($row['avatar'] == true)
      {
   ?>
         http://www.astuce-et-creation.com/Script_membre/script/login/details.php?id=".$row['User_Login']; ?>">" width="87" height="88" border="0">
          <?php
   }
    else
      {
   ?>
       http://www.astuce-et-creation.com/Script_membre/script/login/details.php?id=".$row['User_Login']; ?>">http://www.astuce-et-creation.com/Script_membre/script/login/avatar/aucun_avat.gif" width="87" height="88" border="0">
        <?php
   }?>,
     http://www.astuce-et-creation.com/Script_membre/script/login/details.php?id=<?php echo $row['User_Login']; ?>"><?php echo $row['User_Login']; ?>,
     <?php if ($row['age'] == true)
      {
   ?>
         <?php echo $row['age']; ?>
          <?php
   }
    else
      {
   ?>
       Inconnu
        <?php
   }?>,
     <?php if ($row['sexe'] == true)
      {
   ?>
   <?php
   if($row['sexe'] == "Femme") {
   ?>
    
   <?php
   } else if($row['sexe'] == "Homme") {
   ?>
    
   <?php
   } else {
   ?>
    
   <?php
   }
   }
   ?>
        <?php
  $query2 = "SELECT * FROM $tb_connect";
  
  $retour2 = mysql_query($query2);
  
  while($row2 = mysql_fetch_array($retour2)) {
  
  $login1 = $row['User_Login'];
  $login2 = $row2['login'];
  
  if($login1 == $login2) {
   ?> ,
     ,
    
  <?php
  } else {
   echo \"\";
  }
  }
 }
  
  mysql_close($db); ?>
   

   </center>


 
  </td>
        </tr>
   </table>    
 
 </td>
  </tr>
</table>

</html>

Merci de m'aider

a++







Si la réponse vous convient, pensez : Réponse accepté !

9 réponses

bcmfr Messages postés 137 Date d'inscription jeudi 18 juillet 2002 Statut Membre Dernière intervention 20 novembre 2016
4 juin 2008 à 21:00
Slt
session_is_registered, il me semble que c'est pas top pour savoir si la session est utilisée non? C'est pas ca la cause mais c juste une remarque comme ca...
@+

Vous avez un coup de gueule à passer?
http://www.ca-menerve.fr
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
4 juin 2008 à 21:29
ok,

mais comme tu l'a dit ce n'ai pas ça la question !

a++

Si la réponse vous convient, pensez : Réponse accepté !
0
emperor01 Messages postés 25 Date d'inscription lundi 10 novembre 2003 Statut Membre Dernière intervention 7 juin 2008
5 juin 2008 à 03:36
Tu as essayer l'ajax.

1ere etape
   tu fais un script qui fait une ecriture dans ta table de connexion en php prenant une variable en GET,
   puis tout les autant de temps tu fais une inscription dans la base.
2eme etape
   un script cron.php qui vide la table a intervalle regulier

Resultat : Tant que l'utilisateur à sa page ouverte il dit qu'il est connecter et tu as un rafraichissement variable en fonction du cron.

c une idée comme une autre et sans cette vilaine table des "sessions Active" lol
0
emperor01 Messages postés 25 Date d'inscription lundi 10 novembre 2003 Statut Membre Dernière intervention 7 juin 2008
5 juin 2008 à 03:37
A regarde Scriptaculous c une classe ajax pour faire ca simplement

Bon courage
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
5 juin 2008 à 04:25
salut

coder salement nuit a la lisibilite...

ensuite, nicomilville, ton algo est en n*n, c'est a dire que si tu as n membres, alors tu auras n*n passages dans ce while : while($row2 = mysql_fetch_array($retour2)) { et ca c'est tres violent... tu peux optimiser ca avec un where.

ensuite, faire un :

else {
echo "";
}

ca embrouille les gens et ca sert a rien.
ton html est vieux.
n'utilise pas session_is_registered mais utilise isset($_SESSION['truc'])
enfin, utiliser les " ca ralentit ton script pour rien.


sinon, voila un equivalent de ton code, mais en BEAUCOUP plus rapide :


<?php
$query2 = 'SELECT 1 FROM '.$tb_connect.'
WHERE `User_login`="'.$row['User_Login'].'"';
$retour2 = mysql_query($query2);
$row2 = mysql_fetch_array($retour2
if ($row2 !== false){
?>....<?php
}
?>

le truc, c'est que $tb_connect, je ne sais pas ce qu'elle contient, mais a mon avis, c'est les membres, et pas seulement ceux qui sont connectes...
pour y remedier, tu peux ajouter une requete UPDATE qui mette a jours une "date de dernier passage" et ajouter un WHERE DIFF_TIME(NOW, dernier_passage) < 5*60
je me suis peut-etre plante sur ce where, j'ai pas la doc sous les yeux, mais le principe y est.
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
5 juin 2008 à 06:51
Salut tout le monde,

emperor01, ajax ne me tente pas trop... mais si il n'y avait que cette solution j'aurai fait avec...

coucou747 : ce code est effectivement sale (il est vieu de 4 ans) son créateur m'a demané a moi et a un collègue de le remetttre en état et d'ajouter des fonction... ce qui est sur c'est que ce n'est pas du html et en plus c'était en php3 d'ou le session_is_requistered....

La table $tb_connect contient les membres connectés, elle est actualisé toute les 10 secondes... je ne comprend pas j'ai une requête semblable dans une autre page qui n'affiche que les membre connecté et ça marche donc...

Dans la table $tb_connect il y a comme je l'ai dit plus haut les membre connectés seuleument elle contient les champs suivant :
- dateDebut (date de debut de la session : timestamp)
- dateFin (date de la fin de la session : timestamp)
- ip (ip du membre connecté)
- login (pseudo des membres connectés)

Je ne comprend pas poourquoi mon code ne marche pas !

Si vous avez une petite idée...

Merci de m'aider

a++

Si la réponse vous convient, pensez : Réponse accepté !
0
emperor01 Messages postés 25 Date d'inscription lundi 10 novembre 2003 Statut Membre Dernière intervention 7 juin 2008
5 juin 2008 à 14:37
Déja ligne 59 tu as oublie les simple cote :
 $login $row[login]; ?>> $login = $row['login']; ?>
0
emperor01 Messages postés 25 Date d'inscription lundi 10 novembre 2003 Statut Membre Dernière intervention 7 juin 2008
5 juin 2008 à 14:39
si tu es sous linux verifie les noms des champs car mysql sous linux tient compte de la casse. Notament ligne 112 : $row['User_Login'] car tout les autres noms de champ sont en minuscule ???
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
5 juin 2008 à 16:15
re,

pour les guillemets je les est rajouté, sinon, je suis sous windows et les nom des champs respectent la casse...

a++

Si la réponse vous convient, pensez : Réponse accepté !
0
Rejoignez-nous