Logo - MyWebsolution.de
User gesamt  :  2452872
User online  :  5
KubaSeoTräume, PHP Forum, PHP Community and more ... MyWebsolution.de!
   
   
 
Registrieren Login User F.A.Q Suche Home

eingeloggt bleiben

MyWebsolution.de Foren » PHP und MYSQL » User online Skript

Seite: 1 2 3  > Posts pro Seite: 5 10 20
Autor Thread
12.01.2007 17:39 Uhr User online Skript
mdean
Forenposter
 
registriert 03.01.2007
wohnt in Schweiz
Beiträge 90
Weiss nich ob du das in den Workshop getan hast oder nicht, habs jedenfalls nicht gesehen.
Ich bräuchte ein Skript, dass anzeigt, wieviele user online sind. so ähnlich wie du es bei deiner page oben hast. Weisst du wie das geht?
Profil ansehen
12.01.2007 18:17 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Zitat:
Weisst du wie das geht?

Bei allem, was du auf der Homepage findest, kannst du 100%ig davon ausgehen, dass ich weiß wie das geht ;)

Also, du erstellst dir zuerst eine MySQL Datenbank

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



Entweder über PHPMyAdmin oder mit diesem Query

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


Dann brauchst du noch folgendes Script, was auf jeder Seite aufgerufen werden muss

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 IP, die nicht älter als 2 Minuten sind,
    // werden aus der Datenbank ausgewä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);
?>


Kann Syntaxfehler enthalten, ist 'auf die Schnelle' zusammengeschrieben bzw. aus meinen Skripten kopiert & kommentiert ;)

Grundsätzlich tut es folgendes:

Benutzer kommt auf die Seite.
Dieser Benutzer hat eine IP, gespeichert in $_SERVER['REMOTE_ADDR'].
Die Datenbank Online, die zuvor angelegt wurde, wird nach dieser IP dursucht.
Wird sie 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.

Im letzten Schritt werden 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 kannst du auch 5 oder 10 machen. 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.


Profil ansehen Mail senden
12.01.2007 18:18 Uhr
Negura
Forenposter
 
registriert 06.12.2006
wohnt in
Beiträge 57
Zitat:
so ähnlich wie du es bei deiner page oben hast. Weisst du wie das geht?

Wird er wohl wissen! :laugh:

Ich weis nun nicht wie das im Workshop aussieht, aber wenn du über die gespeicherte SessionID überprüfst das ein Benutzer angemeldet ist, dann kannst du einfach eine Abfrage machen welcher Benutzer eine gültige SessionID in der Datenbank hat.

Gruß Negura
Profil ansehen
12.01.2007 18:23 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
huch, jetzt von Negura es sagt.. ^^
Also, dass, was ich gerade beschrieben habe, bezieht auf die Anzeige, die du wirklich oben auf der Homepage findest, diese zählt alle Besucher (soltle ich vielleicht mal umbenennen ^^).

Wenn du nur schaun willst, welche angemeldeten User online sind, wie es auf der Forenhauptseite unten der Fall ist, kannst du das tatsächlich über die SessionID machen:

PHP:
<?php
    $sql 
"SELECT
                    COUNT(SessionID)
            FROM
                    User
           "
;
    
$result mysql_query($sql);
    
$anzahl mysql_result($result,0);
?>


Naja.. such dir aus, was du wolltest ^^


Profil ansehen Mail senden
12.01.2007 18:27 Uhr
mdean
Forenposter
 
registriert 03.01.2007
wohnt in Schweiz
Beiträge 90
Nene habs schon so gemeint, dass es die anzahl anzeigt, der leute die grade auf der page sind. Habs jetzt mal ausprobiert, aber irgendwie wird nichts ausgegeben. Aber in die datenbank sind die daten eingetragen, also an dem liegts nicht
Profil ansehen
Seite: 1 2 3  > no reply
Powered by Pascal Landau © 2006 MyWebsolution.de
Designed by Pascal Landau © 2006 MyWebsolution.de
 
 
 
 
Home Email Impressum Disclaimer Statistik