|
|
User gesamt
|
:
|
2387904
|
User online
|
:
|
4
|
|
KubaSeoTräume, PHP Forum, PHP Community and more ... MyWebsolution.de!
|
|
|
|
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?
|
|
|
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($result, 0);
?>
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.
|
|
|
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!
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
|
|
|
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 ^^
|
|
|
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
|
|
|
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
|
|
|
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
|
|
|
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!
Nebenbei, hast du PHP selbst gelernt, oder hast du eine Schule besucht?
|
|
|
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 .
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 ). 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
|
|
|
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.
|
|
|
Seite:
|
1
2
>
|
|
|
Powered by
|
Pascal Landau
|
© 2006
|
MyWebsolution.de
|
Designed by
|
Pascal Landau
|
© 2006
|
MyWebsolution.de
|
|
|
|
|
|