PHP
x User Online mit PHP
In diesem Tutorial erfährst du, wie du auf deiner Homepage eine “x User online” Anzeige einbauen kannst.
Zur Speicherung der Daten wird eine MySQL-Datenbank verwendet. (1 Tabelle)
Grundlagen
Da man nicht sagen kann, wann genau ein User eine Internetseite verlassen hat (das ist technisch nur mit Tricks realisierbar und nicht sehr zuverlässig), kann man nur angeben, wie viele User in den letzten x Minuten online waren.
Dazu wird die IP des User und der Timestamp der letzen Aktivität in der Datenbank gespeichert. Wenn der User eine weitere Seite aufruft, muss der Timestamp aktualisiert werden. Wenn allerdings ein neuer User auf die Seite kommt, muss dessen IP und der Timestamp in die Datenbank eingetragen werden.
Außerdem müssen die alten Einträge gelöscht werden, damit die Abfrage nicht unnötig lang dauert.
Das Script
Als erstes brauchen wir eine Verbindung zu der MySql Datenbank.
Dazu kommt in die Datei „useronline.php“:
<?php
mysql_connect(“localhost”,“name”,“passwort”);
mysql_select_db(“datenbank”);
?>Die „Felder“ name, passwort und datenbank müssen hierbei natürlich durch deine Daten ersetzt werden.
Nun benötigen wir eine Tabelle mit den Feldern: ip und timestamp
In unserem Beispiel heißt die Tabelle „useronline“.
CREATE TABLE `useronline` (
`ip` text NOT NULL,
`timestamp` text NOT NULL
) TYPE=MyISAM;Im nächsten Schritt, legen wir fest, wie lange ein User nach seiner letzten Aktivität als Online gilt. Das ganze wird in Sekunden angegeben.
Außerdem wird die IP Adresse des Benutzers ausgelesen:
<?php
$onlinezeit=180;
$ip=$_SERVER[‘REMOTE_ADDR’];
?>
Nun wird in der Datenbank nach einem User mir dieser IP gesucht.
Wenn dieser bereits vorhanden ist, wird nur der Timestamp aktualisiert.
Andernfalls wird eine neue IP in die Datenbank eingefügt.
<?php
$sql = “SELECT timestamp FROM useronline WHERE ip=’$ip’”;
$Ergebnis=mysql_query($sql);
$count=mysql_affected_rows;
$timestamp=time();
if (!
$count){
$sql=“INSERT INTO useronline (ip,timestamp) VALUES (’$ip’,'$timestamp’)”;
$Ergebnis=mysql_query($sql);
}
else{
$sql=“UPDATE useronline SET timestamp=’$timestamp’ WHERE ip=’$ip’”;
$Ergebnis=mysql_query($sql);
}
?>Damit die Datenbank nicht irgendwas überquillt, werden nun alle Einträge, die älter als eine Stunde sind, gelöscht.
<?php
$timestamp=time()-3600;
$sql=“DELETE FROM useronline WHERE timestamp<=’$timestamp’”;
$Ergebnis=mysql_query($sql);
?>Nun muss nur noch ausgelesen werden, wie viele User in den letzten 3 Minuten online waren:
<?php
$timestamp=time()-$onlinezeit;
$sql=“SELECT ip FROM useronline WHERE timestamp>=’$timestamp’”;
$Ergebnis=mysql_query($sql);
$user=mysql_affected_rows();
?>Zu guter letzt erfolgt nun noch die Ausgabe:
<?php
echo $user;
?>Hier noch mal das komplette Script:
<?php
mysql_connect
(“localhost”,“name”,“passwort”);
mysql_select_db(“datenbank”);
$timestamp=time()-3600;
$sql=“DELETE FROM useronline WHERE timestamp<=’$timestamp’”;
$Ergebnis=mysql_query($sql);
$onlinezeit=180;
$ip=$_SERVER[‘REMOTE_ADDR’];
$sql = “SELECT timestamp FROM useronline WHERE ip=’$ip’”;
$Ergebnis=mysql_query($sql);
$count=mysql_affected_rows;
$timestamp=time();
if (!
$count){
$sql=“INSERT INTO useronline (ip,timestamp) VALUES (‘$ip’,'$timestamp’)”;
$Ergebnis=mysql_query($sql);
}
else{
$sql=“UPDATE useronline SET timestamp=’$timestamp’ WHERE ip=’$ip’”;
$Ergebnis=mysql_query($sql);
}
$timestamp=time()-3600;
$sql=“DELETE FROM useronline WHERE timestamp<=’$timestamp’”;
$Ergebnis=mysql_query($sql);
$timestamp=time()-$onlinezeit;
$sql=“SELECT ip FROM useronline WHERE timestamp>=’$timestamp’”;
$Ergebnis=mysql_query($sql,$Verbindung);
$user=mysql_affected_rows();
echo
$user.“ User online”;
?>- Sessions (Login mit PHP)
- Gästebuch mit PHP
- Flashcounter mit PHP
- Thumbnail erzeugen mit PHP
- Template Parser mit PHP
- Reguläre Ausdrücke
- Counter mit PHP
- PDF mit PHP erstellen
- Pagerank auslesen mit PHP
- Klassen mit PHP
- Fehler in PHP abfangen
- Datei hochladen mit PHP
- Datei Browser mit PHP
- Captcha mit PHP erstellen
- Bild erstellen mit PHP
- Zufallszahl mit PHP ausgeben
- Zufallsbild anzeigen mit PHP
- Weiterleitung mit PHP
- ICQ Status mit PHP prüfen
- SQL für Anfänger
- Sichere Passwörter mit PHP
- MySQL Grundlagen
- Letzte Änderung einer Datei auslesen mit PHP
- Ladezeit eines PHP Skriptes
- IP-Adresse auslesen mit PHP
- index.php?goto=xxx (include) mit PHP
- HTML in PHP ausgeben
- Googlebot erkennen mit PHP
- Formulare auswerten mit PHP
- PHP Fehlermeldungen richtig interpretieren
- Passwörter generieren mit PHP
- Counter programmieren mit PHP
- E-Mail senden mit PHP
- E-Mail Adresse auf Gültigkeit prüfen mit PHP
- Datum prüfen mit PHP
- Browser anzeigen mit PHP
- Bilder automatisch downloaden mit PHP
- Bild nach Tageszeit mit PHP
- Betriebssystem abfragen mit PHP
- Automatische Verlinkung mit PHP
- Arrays sortieren mit PHP
- URL überprüfen mit PHP
- Alter berechnen mit PHP
- Alphabet mit PHP
- Aktuellen Dateinamen anzeigen mit PHP