Logo - MyWebsolution.de
User gesamt  :  2387904
User online  :  4
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  > 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
12.01.2007 18:30 Uhr
Negura
Forenposter
 
registriert 06.12.2006
wohnt in
Beiträge 57
Zitat:
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


Es scheint mir so als würdest du dich mit dem von Flitze geposteten Code nicht richtig auseinander setzen, guck dir den Code genau an und es wir schon funktionieren. Paste, Copy bringt nicht viel.

Gruß Negura
Profil ansehen
12.01.2007 18:45 Uhr RE:
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Zitat:
mdean
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


Ich hoffe inständig, dass dir klar ist, das du noch irgendwo

PHP:
<?php
echo $anzahl;
?>


schreiben musst und das nicht dein Fehler ist ;)


Profil ansehen Mail senden
12.01.2007 18:56 Uhr
mdean
Forenposter
 
registriert 03.01.2007
wohnt in Schweiz
Beiträge 90
Ne hab vergessen, meine verbindungsdaten anzugeben :). Auf jeden Fall funktioniert es jetzt. Vielen Dank, auf dich ist verlass! :trink:

Nebenbei, hast du PHP selbst gelernt, oder hast du eine Schule besucht?
Profil ansehen
12.01.2007 19:03 Uhr RE:
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Zitat:
mdean
Ne hab vergessen, meine verbindungsdaten anzugeben :).

:rolleyes:

Zitat:
Nebenbei, hast du PHP selbst gelernt, oder hast du eine Schule besucht?

Ich besuch noch immer eine Schule (Berufliches Gymnasium), bei der der Schwerpunkt auf Datenverarbeitungstechnik liegt. PHP lernen wir da allerdings nicht, aber wir hatten ein halbes Jahr lang eine Einführung in C, wodurch ich schon so die Grundprinzipien (aber wirklich nur die Grundprinzipien) einer strukturierten Programmiersprache kannte. Das ist allerdings auch schon 2 Jahre her ;).

Mit PHP selbst beschäftige ich mich seit etwa 6 Monaten, grob geschätzt (warum und wieso ich dazu gekommen bin, ist unter Intention nachzulesen :P). Das was ich jetzt so kann habe ich mir selbst beigebracht, mit Hilfe verschiedener Tutorials und eben learning by doing ^^ und diese Seite ist quasie mein Jungfernprojekt ;)


Profil ansehen Mail senden
12.01.2007 19:35 Uhr
mdean
Forenposter
 
registriert 03.01.2007
wohnt in Schweiz
Beiträge 90
Ich wollte mich auch schon näher mit php befassen, aber irgendwie fehlt mir die zeit dazu... dieses tut.php-q.net haben jetzt schon viele erwähnt, schätze mal es lohnt sich das mal in den nächsten Ferien durchzuarbeiten :). Hab mir zwar schon videotuts undso angeschaut, aber das hat mir nur geholfen die sprache ein bisschen zu verstehen, jedoch nicht zu schreiben.
Profil ansehen
Seite: 1 2  > no reply
Powered by Pascal Landau © 2006 MyWebsolution.de
Designed by Pascal Landau © 2006 MyWebsolution.de
 
 
 
 
Home Email Impressum Disclaimer Statistik