mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 25.04.2024 06:52 Benutzername: Passwort: Auto-Login

Thema: User Online Script gesucht vom 08.11.2007


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> User Online Script gesucht
Autor Nachricht
ggrrrr
Threadersteller

Dabei seit: 20.09.2006
Ort: Berlin / Stuttgart
Alter: 40
Geschlecht: Männlich
Verfasst Do 08.11.2007 22:00
Titel

User Online Script gesucht

Antworten mit Zitat Zum Seitenanfang

Hallo Leute,

ich bin schon ziemlich genervt weil ich seit 4 Stunden über google und diverse php archive einen stinknormalen und ganz einfachen user online counter suche, der mir anzeigt wieviele user momentan online sind, wieviele gestern und wieviele insgesamt. Das ganze soll auf php basieren ohne irgendeinen schnick schnack mit einer einfachen und verständlichen Anleitung.

Villeicht wird mir ja hier geholfen, bin schon ziemlich sauer das ich nichts passendes finde !

danke im vorraus
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
remote

Dabei seit: 10.11.2006
Ort: /var/www/
Alter: 110
Geschlecht: Männlich
Verfasst Do 08.11.2007 23:56
Titel

Antworten mit Zitat Zum Seitenanfang

...eigentlich doch ziemlich simpel.
Du brauchst die Uhrzeit, IP des Besuchers und das Datum... ggf. noch einen Gedanken an Suchmaschinen und Crawler verschwenden, die ohne Filter leicht 90% deiner Klicks ausmachen werden.

..also ganz rudimentär... erstmal die Werte sammeln:

Code:
$timestamp = time();
$ip = $_SERVER['REMOTE_ADDR'];
$time_month = date("m",$timestamp);
$time_year = date("Y",$timestamp);


...dann das ganze in eine Datenbank-Tabelle und jeden Eintrag nach XY Minuten verwerfen:

Code:
$diff = time()-800;
// bestimmt wie lange ein User nach der letzten Aktion als online zählt (Sekunden).

$dz = mysql_connect(localhost, "user", "pass");
mysql_select_db(datenbank, $dz);

// überfällige einträge löschen
mysql_query("DELETE FROM `table` WHERE time < ".$diff."");

// prüfen ob der besucher schon als online gezählt wird
$qonline = "SELECT COUNT(*) FROM `table` WHERE `ip`='".$ip."'";
list($online) = mysql_fetch_row(mysql_query($qonline));

if($online > 0) {
  // IP steht bereits in DB
  $query = "UPDATE `table` SET `time`='".time()."' WHERE `ip`='".$ip."' ";
  mysql_query($query);
} else {
  // IP steht noch nicht in DB
  $query = "INSERT INTO `table` SET `time`='".time()."',`ip`='".$ip."'";
  mysql_query($query);
  // hier könnte nun zusätzlich der gesamtcounter um 1 erhöht werden
}
mysql_close($dz);


Wenn du neben IP und dem Timestamp der letzten Aktualisierung auch sehen willst wieviele gestern, letzten Monat oder im laufenden Jahr auf deine Seite gekommen sind, trägst du eben noch date() mit ein und kannst dann bei der Anzeige entsprechend filtern.
Prinzipiell ganz einfach... und unendlich ausbaufähig: Crawler registrieren, Visits und Hits besser trennen, Referer, Sprache, Herkunft, Re-Visits, Verweildauer, Klickrate... super Thema um sich ein bischen mit PHP zu beschäftigen. Im entsprechenden Forum hilft man dir sicher gerne bei der Erstellung deines Counters *zwinker*

Wenn du was fertiges abstauben willst, schau dir Google-Analytics an oder guck hier, weil so
  View user's profile Private Nachricht senden
Anzeige
Anzeige
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht: Männlich
Verfasst So 11.11.2007 03:15
Titel

Antworten mit Zitat Zum Seitenanfang

HTTP ist ein zustandloses Protokoll.
Du kannst daher unmöglich, ein wirklich funktionierendes User-Online-Script schreiben.
Du kannst eigentlich nur Rateversuche anstellen, wie viele User gerade online sind.
Je nachdem wie du das anstellst, kannst du allerdings eventuell zu brauchbaren Ergebnissen kommen.

Allerdings bin ich nicht ganz sicher, was du eigentlich genau suchst...
Wie viele User momentan gerade online sind und wie viele User die Tage zuvor auf der Site waren, sind unterschiedliche Dinge.
Für das Erste hat remote dir schon was geschrieben und gleich folgt noch ein Link von mir.
Für das Zweite würde ich die Server-Logs auswerten und dieses eventuell grafisch darstellen.

Zitat:
bin schon ziemlich genervt weil ich seit 4 Stunden über google

4 Stunden Suche?
Ich finde mit Google sofort etwas, schon beim ersten Versuch:
http://tut.php-quake.net/online.html
  View user's profile Private Nachricht senden
pRiMUS

Dabei seit: 09.09.2003
Ort: Vienna
Alter: 48
Geschlecht: Männlich
Verfasst So 11.11.2007 11:25
Titel

Antworten mit Zitat Zum Seitenanfang

remote hat geschrieben:
...eigentlich doch ziemlich simpel.
Du brauchst die Uhrzeit, IP des Besuchers und das Datum... ggf. noch einen Gedanken an Suchmaschinen und Crawler verschwenden, die ohne Filter leicht 90% deiner Klicks ausmachen werden.

..also ganz rudimentär... erstmal die Werte sammeln:

Code:
$timestamp = time();
$ip = $_SERVER['REMOTE_ADDR'];
$time_month = date("m",$timestamp);
$time_year = date("Y",$timestamp);


...dann das ganze in eine Datenbank-Tabelle und jeden Eintrag nach XY Minuten verwerfen:

Code:
$diff = time()-800;
// bestimmt wie lange ein User nach der letzten Aktion als online zählt (Sekunden).

$dz = mysql_connect(localhost, "user", "pass");
mysql_select_db(datenbank, $dz);

// überfällige einträge löschen
mysql_query("DELETE FROM `table` WHERE time < ".$diff."");

// prüfen ob der besucher schon als online gezählt wird
$qonline = "SELECT COUNT(*) FROM `table` WHERE `ip`='".$ip."'";
list($online) = mysql_fetch_row(mysql_query($qonline));

if($online > 0) {
  // IP steht bereits in DB
  $query = "UPDATE `table` SET `time`='".time()."' WHERE `ip`='".$ip."' ";
  mysql_query($query);
} else {
  // IP steht noch nicht in DB
  $query = "INSERT INTO `table` SET `time`='".time()."',`ip`='".$ip."'";
  mysql_query($query);
  // hier könnte nun zusätzlich der gesamtcounter um 1 erhöht werden
}
mysql_close($dz);


Wenn du neben IP und dem Timestamp der letzten Aktualisierung auch sehen willst wieviele gestern, letzten Monat oder im laufenden Jahr auf deine Seite gekommen sind, trägst du eben noch date() mit ein und kannst dann bei der Anzeige entsprechend filtern.
Prinzipiell ganz einfach... und unendlich ausbaufähig: Crawler registrieren, Visits und Hits besser trennen, Referer, Sprache, Herkunft, Re-Visits, Verweildauer, Klickrate... super Thema um sich ein bischen mit PHP zu beschäftigen. Im entsprechenden Forum hilft man dir sicher gerne bei der Erstellung deines Counters *zwinker*

Wenn du was fertiges abstauben willst, schau dir Google-Analytics an oder guck hier, weil so


mal als tipps:

1. niemals auf die ips prüfen, da diese nicht einmalig sind, bei der nächsten einwahl hat jemand anders die ip und du hast sie evtl noch im cache, lieber eine unique id in der session mit speichern und diese in der db abfragen.

2. warum die überfälligen daten aus der db entfernen, man könnte somit auch noch rausfiltern wie oft der benutzer sich angemeldet hat und statistiken wann er meistens online ist.

3. verwende bitte niemals die php datums funktionen, wenn mysql die selbst und sogar besser beherrscht. vor allen dingen dann nicht, wenn du versuchst den timestamp als varchar (so sieht es im moment aus) ablegen willst. zeit und datums einträge sollten im spalten format date oder besser datetime angelegt werden, um dann a) damit rechnen zu können und b) querys darauf abzusetzen.

Code:
insert into tabelle set (datum) values (NOW())
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
remote

Dabei seit: 10.11.2006
Ort: /var/www/
Alter: 110
Geschlecht: Männlich
Verfasst So 11.11.2007 11:39
Titel

Antworten mit Zitat Zum Seitenanfang

pRiMUS hat geschrieben:


mal als tipps:

1. niemals auf die ips prüfen, da diese nicht einmalig sind, bei der nächsten einwahl hat jemand anders die ip und du hast sie evtl noch im cache, lieber eine unique id in der session mit speichern und diese in der db abfragen.


Sicherlich richtig - auch wenn die Chance, dass innerhalb von X Minuten 2 unterschiedliche User mit der selben IP auf die Seite gelangen gegen 0 tendiert. Abgesehen davon kommt man um die IP ohnehin nicht ganz herum, da man ja wie oben erwähnt, kaum alle crawler und bots mit erfassen möchte.

pRiMUS hat geschrieben:

2. warum die überfälligen daten aus der db entfernen, man könnte somit auch noch rausfiltern wie oft der benutzer sich angemeldet hat und statistiken wann er meistens online ist.


Wenn es ein System mit Anmeldung gibt, also das Problem der Erkennung von re-visits elegant aus dem Weg geräumt ist, ja. Das Snippet in meinem ersten Post ist nicht als copy&paste zu verstehen, sondern als Grundlage auf der man aufbauen kann - ich würde es so auch nciht verwenden.

pRiMUS hat geschrieben:
3. verwende bitte niemals die php datums funktionen, wenn mysql die selbst und sogar besser beherrscht. vor allen dingen dann nicht, wenn du versuchst den timestamp als varchar (so sieht es im moment aus) ablegen willst. zeit und datums einträge sollten im spalten format date oder besser datetime angelegt werden, um dann a) damit rechnen zu können und b) querys darauf abzusetzen.


Ich mache noch viel dümmere Dinge damit... zerschneiden und in verschiedene INT Felder packen * Wo bin ich? *
..aber danke für die netten Tipps *zwinker*
  View user's profile Private Nachricht senden
 
Ähnliche Themen Suche Script zur Information der User
[PHP] Online-User Anzeige
Script für Online Bildershop
Suche: Online HTML-Editor (bzw. Script)
Font in MS User Interface Office 2010 gesucht
PHP - Script für Typo gesucht
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.