Cookies: Online Status eines Users

CrushLog

Erfahrenes Mitglied
Moin,

also ich würd gern ma eine gute Möglichkeit erfahren, wie man den Online Status eines Users in der DB einträgt und ausliest, usw. Also, wenn ich auf die Details eines Users geh, dass man sehen kann, ob er online ist, oder nicht.

Das mit Cookies, wär nett, wenn mir dabei jemand helfen könnte :/

Danke schon mal
 
hmm,

das Problem ist, dass der Cookie dir auch nur sagt dass der User da ist wenn er sich selbst meldet. Ich mach das auf meinem Board indem ich einen Timestamp in eine Tabelle schreibe und diese jeweils auslese wenn ein User sie aufruft. Dabei lösche ich alle einträge die älter sind als 5 minuten. SO hat man immer eine aktuelle Liste. Die grossen Boards machen es AFAIK alle genauso.
 
hmm,

PHP:
function onlineuser($text1,$text2)
       {
         global $dbserver,$dbuser,$dbpass,$dbname,$STL;
         $db = @mysql_connect( $dbserver,$dbuser,$dbpass);
         mysql_select_db($dbname,$db);
         $timer = time()-900;
         $query = "DELETE FROM online WHERE login < ".$timer;
         mysql_query($query,$db);
         $query = "SELECT name FROM online WHERE name <> \"\"";
         $result = mysql_query($query,$db);
         $useronline = mysql_num_rows($result);
         $query = "SELECT ip FROM online";
         $result2 = mysql_query($query,$db);
         $allusers = mysql_num_rows($result2);
		 $usergesamt = $allusers - $useronline;
         $query = "SELECT * FROM maxuser";
		 $result3 = mysql_query($query,$db);
		 $maxuser = mysql_fetch_array($result3,MYSQL_ASSOC);
		 if ($allusers > $maxuser["user"])
		 	{
				$query = "DELETE FROM maxuser WHERE user = ".$maxuser["user"];
				mysql_query($query,$db);
				$zeit = time();
				// $zeit = strftime("%Y-%m-%d %H:%M:%S",time());
				$query = "INSERT INTO maxuser VALUES (\"".$allusers."\", \"".$zeit."\")";
				
				mysql_query($query,$db);
				$max1 = $allusers;
				$max2 = $zeit;
			}
		 else
		 	{
				$max1 = $maxuser["user"];
				$max2 = $maxuser["zeit"];
			}
		 if ($useronline == 0 AND $usergesamt == 0)
            {
                                global $STL, $SBR;

               $t = new tabelle;
                  $t->rows = 2;
                  $t->cols = 1;
                  $t->einrueck = $STL;
                  $t->rowspan = 3;
                  $t->border = 0;
                  $t->tt = array( $text1 );
                  $t->sb = array("200");
                  $t->klaraPfad = "bilder/klara.gif";
                  $t->ra = $SBR[0];// reihen abstand
               $t-> doTable("open");
               echo "<tr><td>".$text2."</td></tr></table>";
            }
         else
            {
              $zeilen = ceil($useronline/9);
              $t = new tabelle;
                  $t->rows = 2+$zeilen;
                  $t->cols = 10;
                  $t->einrueck = 24;
                  $t->rowspan = $zeilen+5;
                  $t->border = 0;
                  $t->colspan= array("9");
                  $t->tt = array( $text1 );
                  $t->sb = array("80","80","80","80","80","80","80","80","80");
                  // $t->sb = array("50","50","50","50","50","50","50","50","50","50","50","50","50","50","50");
                  $t->klaraPfad = "bilder/klara.gif";
                  $t->ra = $SBR[0];// reihen abstand
               $t-> doTable("open");
               $spaltenzaehler = 0;
               if ($useronline<>0)
                {
                 echo "<tr>";
                 while ($row = mysql_fetch_array($result,MYSQL_ASSOC))
                   {
                      $spaltenzaehler++;
                      if ($spaltenzaehler == 10)
                        {
                          $spaltenzaehler = 1;
                          echo "</tr><tr>";
                        }
                      echo "<td><a href=\"showuser.php?puser=".$row["name"]."&ppass=\">".$row["name"]."</a></td>";
                   }
                 echo "</tr>";
                }
               if ($usergesamt > 0)
                {
                   echo "<tr><td colspan=\"10\"><b class='small'>nicht eingeloggte User ".$usergesamt."</b></td></tr>";
                }
               echo "<tr><td colspan=\"10\"><b class='small'>Maximale Onlineuserzahl ".$max1." am ".date("d-m-Y H:i",$max2)."</b></td>";
			   echo "</tr></table>";
            }
          mysql_close($db);
       }

Die Function baltelt das zusammen.

Die tab online sieht so aus
http://www.joelh.de/bilder/onl.png

anguggen hier =>
http://www.joelh.de/jbb/foren.php
 
Zurück