User weg?

PsychoSam

Mitglied
Hallo
ich würde gern wisse wie ich erfahre ob der User noch auf der Site ist oder net
möglichst ohne cookies, wenns net anders geht, dann auch mit cookies...

danke
 
Code:
CREATE TABLE:

CREATE TABLE onlineuser (
   ID int(11) DEFAULT '0' NOT NULL auto_increment,
   UserID char(255),
   IP char(255),
   NAME char(255),
   COUNT char(255),
   TIME char(255),
   PRIMARY KEY (ID)
);

danach ein script mit folgendem inhalt erstellen

Code:
// Daten fuer "Users Online "
$host = "localhost";
$user = "";
$pass = "";
$datenbank   = "";
$tabelle ="onlineuser"; //Tabellenname
$online_time ="300"; //Zeit in sec die ein user "online" ist

// Verbindung mit dem Server herstellen
$linkdb = mysql_connect ("$host", "$user", "$pass")
   OR die ("Keine Verbindung zu $host möglich!");

// Datenbank selektieren und auswählen
mysql_select_db($datenbank, $linkdb)
   OR die ("Konnte $datenbank nicht öffnen: ".mysql_error());


$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%tigeinzigartige ID erstellt
$ip = getenv("REMOTE_ADDR");  // Remote addresse des User oder besser gesagt die IP bsp: 127.0.0.1 (localhost)
$dummy =""; //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
?>

und mit
Code:
<?php echo "es sind " . $row["total"] ." user online"; ?>
gibst du dann die user aus :-)
 
Hallo
boa großes ..

aber ich hät noch 3 fragen:
1)$online_time ="300";
ist diese 300 riene willkür oder steckt do jetzt ein limit dahinter *etwasconfused*

2)$delete_time = $rtime - $online_time; leider auch net ganz :(
allerdings komt das davon dass ich net weiß was es mit der onlinetime auf sich hat wie oben beschrieben

3)
$delete = mysql_query("delete from $tabelle where TIME < $delete_time") or die(mysql_Error());

muss das nicht in eine zeitliche schleife?
weil sonst wir d das ja nur einmal aufgerufen...
kenne es halt von VB so..


danke für antworten
mir ist übrigens aufgefallen dass ich anscheinend den beitrag zweimal gepostet hab, was ich ausversehen getan hab
sorry..
 
1. Ist das Zeitlimit. Nach einem Seitenaufruf gilt ein User für 5 Minuten (300 Sekunden) als Online.

2. Hier wird die aktuelle Zeil - $online_time gerechnet.
Danach wird dieser Wert mit dem in der Datenbank verglichen. Ist der gespeicherte Wert kleiner, wird dieser in 3. gelöscht.

3. ist in 2. Beantwortet.

edit:
Noch was:
Das Script muss in jede Seite included werden. Danach erhältst du immer die ungefähre Userzahl.
 
hmm hab jetzt alles verstand außer
heißt das dass der User ein Zeitlimit von 5 min auf der ganzen website hat und wenn die aus sind wird er automatisch ausgelogt egal ob er noch druf ist oder net

oder heißt es wenn er auf einer site ist und mehr als 5 min druf ist automatisch ausgelogt wird?

danke für antworten
 
Zurück