PHP Tutorials, PHP lernen, PHP Forum, PHP Community and more ... MyWebsolution.de!

Sidebar

Home News Tutorials Workshops Tipps Artikel Gästebuch Sitemap Unicode Shopping

Suche

Members

Forum Login Registrierung

Statistik

Statistikbereich
Jetzt1
Heute291
Gestern304
Gesamt1635767

User Online Skript

Autor Flitze
Klicks 19448
Rating für User Online Skript
  6.7 von 10
Bewertungen20
Stand 26.02.2009
Keywords:
Besucherzähler, Besucher zählen, User zählen, gerade online, gerade aktiv

Amazon: PHP 5.3 und MySQL 5.1
Breadcrumb:
Tipps » User Online Skript
Seite : 1 Bewerten
Article Wizard - deutscher Article SpinnerMit dem folgenden Skript kann man herausfinden, wie viele Benutzer sich gerade auf der Homepage befinden. Voraussetzung dazu ist eine MySQL-Datenbank.

Zuerst wird eine MySQL-Datenbanktabelle erstellt, die den Namen Online bekommt. Diese Tabelle hat folgende Eigenschaften:

Code:
 Online
+---------------+--------------+------+-----+---------+---------------+
| NAME          | TYP          | NULL | KEY | DEFAULT | Extras        |
+---------------+--------------+------+-----+---------+---------------+
| IP            | VARCHAR(15)  |  X   |     |         |               |
| Datum         | DATETIME     |  X   |     |         |               |
+---------------+--------------+------+-----+---------+---------------+



Zum Erstellen kann der folgende Code verwendet werden:

PHP:
<?php
$sql 
'CREATE TABLE `Online` ('
        
' `IP` VARCHAR(15) NULL, '
        
' `Datum` DATETIME NULL'
        
' )';
mysql_query($sql);
?>


Das Feld IP speichert die IP eines Besucher und Datum speichert den genauen Aufrufszeitpunkt. Das IP-Feld ist genau 15 Zeichen lang, weil eine IP aus maximal 15 Zeichen besteht, 3 Punkten und 12 Ziffern (XXX.XXX.XXX.XXX).

Folgendes Skript muss nun auf jeder Seite aufgerufen werden

PHP:
<?php
    
// Alte (mehr als 1 Tag) IPs in 'Online' löschen
    // damit die Datenbank nicht überfüllt wird
    
$sql "DELETE FROM
                        Online
            WHERE
                        DATE_SUB(NOW(), INTERVAL 1 DAY) > Datum
           "
;
    
mysql_query($sql);

    
// Überprüfe, ob die IP bereits gespeichert ist
    
$sql "SELECT
                        IP
            FROM
                        Online
            Where
                        IP = '"
.$_SERVER['REMOTE_ADDR']."'";
    
$result mysql_query($sql);

    
// Falls nicht, wird sie gespeichert
    
if (!mysql_num_rows($result)){
        
$sql "INSERT INTO
                            Online
                            (IP,
                             Datum
                            )
                VALUES ('"
.$_SERVER['REMOTE_ADDR']."',
                            NOW()
                            )
               "
;
        
mysql_query($sql);
    }
    
// Falls ja, wird ihr Datum aktualisiert
    
else {
        
$sql "UPDATE
                            Online
                SET
                            Datum = NOW()
                WHERE
                            IP = '"
.$_SERVER['REMOTE_ADDR']."'
               "
;
        
mysql_query($sql);
    }

    
// Alle IPs, die nicht älter als 2 Minuten sind,
    // werden gezählt
    
$sql "SELECT
                        COUNT(*)
            FROM
                        Online
            WHERE
                        DATE_SUB(NOW(), INTERVAL 2 MINUTE) < Datum
           "
;
    
$result mysql_query($sql);
    
// $anzahl enthält nun alle User, die online sind
    
$anzahl mysql_result($result0);
?>


Es wird vorausgesetzt, dass bereits eine Datenbankverbindung besteht!

Jeder Benutzer hat eine IP, gespeichert in $_SERVER['REMOTE_ADDR'].
Die Datenbank Online, die zuvor angelegt wurde, wird nach dieser IP dursucht. Wird die IP nicht gefunden, wird ein neuer Datensatz mit dieser IP und der aktuellen Uhrzeit (wichtig!) erstellt. Wird ein Datensatz gefunden, wird dieser mit der aktuellen Uhrzeit aktualisiert.

Man kann nicht 100% genau sagen, wie viele Besucher sich gerade jetzt auf der Homepage befinden, sondern muss ein bestimmtes Zeitinterval definieren.
Im letzten Schritt werden deshalb alle IPs gezählt, die in der Datenbank gespeichert sind und nicht älter als 2 Minuten sind. Die 2 Minuten sind von mir so festgelegt, daraus können auch 5 oder 10 Minuten gemacht werden. Alle IPs, die während dieser Zeit (den letzten 2 Minuten) eingetragen/aktualisiert wurden, werden dann als 'online' angesehen.

Damit die Datenbank nicht unnötig überfüllt wird, werden außerdem alle IPs, die älter als einen Tag sind, gelöscht.

In der Variable $anzahl steht nun die Zahl der Besucht, die gerade auf der Homepage sind.

  Bewerten

»» Zurück zum Menu

Suchmaschinenoptimierung

Suchmaschinenoptimierung (SEO - Search Engine Optimization)

Ranking

Tutorials (13)

8.6
8.4
8.1

Workshops (3)

8.8
8.7
7.6

Tipps (13)

7.2
6.7
6.5

Artikel (29)

8.4
7.2
6.4

RSS Feeds

Full Feed Tutorials Workshops Tipps Artikel

Twitter

Follow me on Twitter

Partner & Links


Valid HTML 4.01 Transitional
Valid CSS
nach oben

Diese Seiten unterstützen MyWebsolution:
 
© MyWebsolution.de
2006-2017