Online Status

HI ich träume schon länge von einem Online Status der zählt wie viel USer zur Zeit online sind könntet ihr mir dabei helfen weil die tutorials leider alle auf datei basieren und ich einen mit mysql haben möchte

danke im voraus
 
Da war Thomas Kuse wohl nicht sehr aufmerksam.

Wenn ich den Autor des Artikels richtig verstanden habe, sollte das Skript am Ende etwa so aussehen:
PHP:
<?php
  $db_host = "";                          //mysql Host
  $db_user = "";                          //mysql User
  $db_passwort = "";                      //mysql Passwort
  $db_name = "";                          //mysql Datenbank
  $tabelle = "onlineuser";                //Tabellenname
  $online_time ="300";                    //Zeit in sec die ein user "online" ist

  $db = mysql_connect($db_host, $db_user, $db_passwort)or die ("Konnte Verbindung nicht herstellen");
  mysql_select_db($db_name,$db)or die ("Konnte Datenbank nicht finden");

  $time = explode(" ", microtime());      //Hier gibts die MicroTime  bsp: 0.86646800 1057693054
  $ltime = (double)$time[0];              //der linke teil also 0.86646800. double ist Variablentyp
  $rtime = (double)$time[1];              //der rechte teil also 1057693054. double ist Variablentyp
  $UserId = $ltime + $rtime;              //Hier wird aus beiden teilen in addition(deswegen der Variablentyp) eine 99%tig einzigartige ID erstellt
  $IP = getIP();                          //Remote addresse des User oder besser gesagt die IP bsp: 127.0.0.1 (localhost)
  $dummy = NULL;                          //Einfach so lassen die brauchen wir später um ein paar Daten zu speichern
  $delete_time = $rtime - $online_time;   //jetzige Zeit minus unsere $online time
  $delete =  mysql_query("DELETE FROM ".$tabelle." WHERE TIME < ".$delete_time) or die(mysql_Error());
  $dummy = mysql_fetch_row(mysql_query("SELECT * FROM ".$tabelle." WHERE IP LIKE '".$IP."'"));   //Abfrage der IP

  if($dummy == false) {                   //wenn IP nicht drinne steht User einfügen
    $ok = mysql_query("INSERT INTO ".$tabelle." (UserID,IP,NAME,TIME) VALUES('".$UserId."','".$IP."','".$HOST."','".$rtime."')") or die("INSERT fehlgeschlagen");
  }
  $result = mysql_query("SELECT COUNT(*) AS total FROM ".$tabelle);  // alle Einträge in total speichern
  $row = mysql_fetch_array($result);       //$row["total"] ist nun die Anzahl der Online User

  echo("Es sind zur Zeit ".$row["total"]." Benutzer online");
?>
Dazu wäre allerdings noch eine weite Funktion nötig, die ich in etwas veränderter Form dieser Seite entnommen habe:
&nbsp;&nbsp;»&nbsp;http://de3.php.net/getenv
PHP:
<?php
  function getIP() {
    $ip = NULL;
    if(getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) {
      $ip = getenv("HTTP_CLIENT_IP");
    } elseif(getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) {
      $ip = getenv("HTTP_X_FORWARDED_FOR");
    } elseif(getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) {
      $ip = getenv("REMOTE_ADDR");
    } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) {
      $ip = $_SERVER['REMOTE_ADDR'];
    } else {
      $ip = "unknown";
    }
    return($ip);
  }
?>
 
Zuletzt bearbeitet:
Wenn du ihn gut kommentierst und noch was dazu erklärst, dürfte es keine Probleme geben wenn du es einem Mod zukommen lässt :)

Thorsten
 
Zurück