Anzeige des letzten Besuchers auf der Website

PHP und MySQL ermöglichen es, mit wenig Aufwand Datum und Uhrzeit des letzten Besuchers auf der Homepage anzeigen zu lassen.

Man das Script auch mit Textfiles realisieren, jedoch ist es empfehlenswert, mit MySQL zu arbeiten, da man hier weitaus weniger Quelltext benötigt.

Wir benötigen eine MySQL Tabelle namens lastuser mit den folgenden Spalten:
ID (INT, auto_incement), Zeit (datetime), IP (varchar) 

Um die Datenbank und die Tabelle nicht unnötig zu belasten, reicht es, wenn wir 2 Zeilen manuell anlegen und mit imaginären Daten füttern. Zwar könnte man mit einer einfachen IF Abfrage die Zeilen auch mit PHP erstellen, da wir die 2 Zeilen jedoch lediglich einmal und zwar beim aller ersten Aufruf der Seite erstellen müssen, ist es unsinnig, bei jedem nachfolgenden Aufruf per IF Anweisung abzufragen, ob die Zeilen schon vorhanden sind. Somit erstellen wir genau 2 Zeilen, welche manuell ID 1 und ID 2 zugewiesen bekommen. datetime kann leer, beziehungsweise mit der Standardeingabe 0000-00-00 00:00:00 versehen bleiben. 

Achtung: Es ist kein Fehler, wenn beim ersten Ausführen des Scriptes die Datumsausgabe 0 erscheint. Beim 2. Aufruf, beziehungsweise beim zweiten Besucher wird das Datum des letzten Users korrekt angezeigt.

Im Script bauen wir zunächst einen Connect zur Datenbank auf:

<?php
$db
=mysql_connect("localhost","Benutzer","Passwort");
mysql_select_db("datenbankname"$db); 
?>

Nun erzeugen wir 2 Ergebnisse aus der Tabelle, einmal die Zeit aus Zeile 1 (ID=1) und aus Zeile 2 (ID=2), zudem noch jeweils die gespeicherte IP Adresse. Das Datum wird als Deutsches Format ausgegeben. Zusätzlich benötigen wir jedoch auch die Zeit im herkömmlichen Format, da MySQL nicht in der Lage ist, ein bereits formatiertes Datum in das für MySQL lesbare datetime Format zu kopieren bzw. zu updaten.

<?php
$ausgabe_1
=mysql_fetch_object(mysql_query ("select DATE_FORMAT(zeit,'%d.%m.%Y um %H:%i Uhr') as zeit_format_1, zeit, id, ip from lastuser where id='1'",$db)); 
$zeit_formatiert_1=$ausgabe_1->zeit_format_1
$zeit_unformatiert_1=$ausgabe_1->zeit
$ip_1=$ausgabe_1->ip

$ausgabe_2=mysql_fetch_object($result2 mysql_query ("select DATE_FORMAT(zeit,'%d.%m.%Y um %H:%i Uhr') as zeit_format_2, zeit, id, ip from lastuser where id='2'",$db)); 
$zeit_formatiert_2=$ausgabe_2->zeit_format_2
$zeit_unformatiert_2=$ausgabe_2->zeit
$ip_2=$ausgabe_2->ip;
?>

Das Konzept besteht nun zunächst darin, den User zu bestimmen, damit er nicht seine eigene Besuchszeit angezeigt bekommt, sondern tatsächlich die des letzten Besuchers. Die einfachste Methode dies zu tun, ist seine IP Adresse per $REMOTE_ADDR zu bestimmen. Diese wird zunächst in Zeile 2 (ID=2) gespeichert, wenn der User die Seite noch nicht reloaded hat, beziehungsweise nicht selbst der letzte Besucher war. Gleichzeitig werden die Daten aus Zeile 1 (ID=1), also die Daten des letzten Besuchers in Zeile 2 (ID=2) kopiert. Ausgegeben wird zuvor Zeile 1, also die Zeit des letzten Besuchers. Beim Update wird die UPDATE Funktion von MySQL verwendet. Hierbei ist unbedingt darauf zu achten, dass die unformatierte Datumsausgabe kopiert wird, welche in der Form 0000-00-00 00:00:00 vorhanden ist. Andernfalls kann die Spalte nicht aktualisiert werden.

<?php
if(!ip_2 == $REMOTE_ADDR

echo 
$zeit_formatiert_2
mysql_query ("UPDATE lastuser SET zeit='$zeit_unformatiert_2', ip='$ip_2' WHERE id='1'"$db); 
mysql_query ("UPDATE lastuser SET zeit=now(''), ip='$REMOTE_ADDR' WHERE id='2'"$db);

?>

Lädt der aktive Besucher die Seite nun noch einmal, wird seine aktuelle IP Adresse mit der gespeicherten IP in Zeile 2 verglichen. War also der aktive Besucher selbst der letzte auf der Seite, so wird ihm nun Zeile 2 ausgegeben. In Zeile 1 sind schon seine Daten gespeichert, die dem nächsten Besucher ausgegeben werden.

<?php
elseif ($ip_2 == $REMOTE_ADDR

echo 
$zeit_formatiert_1

?>

Hier noch einmal das vollständige Script:

<?php 

$db
=mysql_connect("localhost","Benutzer","Passwort"); 
mysql_select_db("datenbankname"$db); 

$ausgabe_1=mysql_fetch_object(mysql_query ("select DATE_FORMAT(zeit,'%d.%m.%Y um %H:%i') as zeit_format_1, zeit, id, ip from lastuser where id='1'",$db)); 
$zeit_formatiert_1=$ausgabe_1->zeit_format_1
$zeit_unformatiert_1=$ausgabe_1->zeit
$ip_1=$ausgabe_1->ip

$ausgabe_2=mysql_fetch_object($result2 mysql_query ("select DATE_FORMAT(zeit,'%d.%m.%Y um %H:%i') as zeit_format_2, zeit, id, ip from lastuser where id='2'",$db)); 
$zeit_formatiert_2=$ausgabe_2->zeit_format_2
$zeit_unformatiert_2=$ausgabe_2->zeit
$ip_2=$ausgabe_2->ip

if (!
$ip_2 == $REMOTE_ADDR

echo 
$zeit_formatiert_2
mysql_query ("UPDATE lastuser SET zeit='$zeit_unformatiert_2', ip='$ip_2' WHERE id='1'"$db); 
mysql_query ("UPDATE lastuser SET zeit=now(''), ip='$REMOTE_ADDR' WHERE id='2'"$db); 

elseif (
$ip_2 == $REMOTE_ADDR

echo 
$zeit_formatiert_1


?> 

Zwar ist die Gefahr relativ gering, dennoch besteht das Risiko, dass 2 User beispielsweise über einen Proxy Server auf der Seite sind, ihre IP ist also die des Proxy Servers. Somit kann dies die Anzeige der Userzeit verfälschen.

Lukas Beck

Ratings

There are no comments available yet.

Here you can write a comment


Please enter at least 10 characters.
Loading... Please wait.
* Pflichtangabe

Related topics

Datenbankinhalt für Suchmaschinen aufbereiten

Sie haben eine Datenbankanwendung geschrieben und keiner weiß, welche Daten bei Ihnen zu finden sind. Suchmaschinen gehen natürlich nicht so weit, daß sie Abfragen an die Datenbank senden. Somit bleibt der Inhalt Ihrer Tabelle für Suchmaschinen unsichtbar ...

Wolfgang13

Autor : Wolfgang13
Category: SEO Tutorials

Wie erstelle ich ein LogIn-Skript?

Das folgende Tutorial nutzt eine Datenbank, in der die Benutzerdaten gespeichert werden und eine Session, in der der Benutzer registriert wird. ...

andy@

Autor : andy@
Category: PHP-Tutorials

Programmierung - SQL

Dieser SQL-Kurs wendet sich vor allem an Programmierer, die mit Hilfe von SQL auf Datebaken zugreifen, und an alle, die Datenbanken neu entwerfen, erweitern oder abändern wollen ...

webmaster205@

Autor : webmaster205@
Category: mySQL-Tutorials

Wie schreibt man ein Forum mit PHP und Mysql

Wie schreibt man ein Forum mit PHP und Mysql

Wie erstellt man ein kleines Forum mit PHP und MYSQL? Dieses Tutorials zeigt wie es geht ...

Moqui

Autor : Moqui
Category: PHP-Tutorials

Templates in PHP

Ein kleines Tutorial zum Einsatz von Templates in PHP am Beispiel der Apolda Templateklasse (kuerbis.org/template/) ...

stulgies@

Autor : stulgies@
Category: PHP-Tutorials

Counter auf MySQL Basis

Neben der Möglichkeitet, einen Counter per Textfiles zu programmieren, besteht auch die Möglichkeit, MySQL zu verwenden. ...

Lukas Beck

Autor : Lukas Beck
Category: PHP-Tutorials

Thumbnails mit PHP erzeugen

Manchmal möchte man Bilder, die auf einer Website dargestellt werden sollen, verkleinern. Solche verkleinerten Bilder nennt man Thumbnails. ...

Wolfgang13

Autor : Wolfgang13
Category: PHP-Tutorials

Migration einer PHP 5 App auf PHP 7

Dieses PHP 7 Tutorial zeigt dir, wie du dein PHP5 Script auf PHP7 umstellst. ...

admin

Autor : admin
Category: PHP-Tutorials

Publish a tutorial

Share your knowledge with other developers worldwide

Share your knowledge with other developers worldwide

You are a professional in your field and want to share your knowledge, then sign up now and share it with our PHP community

learn more

Publish a tutorial