IPB

Willkommen, Gast ( Anmelden | Registrierung )

 
Reply to this topicStart new topic
> User Online, Wieviele User auf meine HP
adoplin
Beitrag 17.05.2006 - 13:01
Beitrag #1


is getting harder


Gruppe: User
Beiträge: 12
Mitglied seit: 17.05.2006
Mitglieds-Nr.: 6.013



Hallo

Meine Frage:

Wie kann ich anzeigen lassen, wieviele User/Leute auf meiner Homepage rumstöbern??
Geht das irgendwie mit PHP??

Grüße
Go to the top of the page
 
+Quote Post
Andreas
Beitrag 17.05.2006 - 13:05
Beitrag #2


____________________
Gruppensymbol

Gruppe: Admin
Beiträge: 1.220
Mitglied seit: 20.10.2001
Mitglieds-Nr.: 3



ZITAT(adoplin @ 17.05.2006 - 14:01) *
Wie kann ich anzeigen lassen, wieviele User/Leute auf meiner Homepage rumstöbern??

Kurz: nein.

Lang: ja, dafür gibt es vorgefertigte (u.a. auch PHP) Scripte, die versuchen aus den Logs oder mittels Counter mehr oder weniger genau und sinnvoll zu erraten, wieviele Leute gerade auf Deiner Seite Online sind.

Am einfachsten wird es für Dich sein, einen externen Code einzubinden. Auf meiner Seite (Siehe Signatur) kannst Du sowas "bewundern". Allzuviel würde ich diese Information aber nicht hineininterpretieren ...

Gruß

Andreas
Go to the top of the page
 
+Quote Post
Auge
Beitrag 17.05.2006 - 23:28
Beitrag #3


Anwärter auf W3.org Mitgliedschaft
*****

Gruppe: User
Beiträge: 550
Mitglied seit: 28.11.2001
Wohnort: Berlin Friedrichshain
Mitglieds-Nr.: 107



Hallo

ZITAT(Andreas @ 17.05.2006 - 14:05) *
Kurz: nein.

Lang: ja, ...

Schön gesagt. *hehehe*

@adoplin:

Solche Skripte zählen die Zugriffe in einem bestimmten Zeitraum. Aufgrund der Architektur des für Webseiten verwandten Protokolls (HTTP) ist das aber strenggenommen nicht möglich. Anders als z.B. bei einem Chat, bei dem eine permanente Verbindung zwischen deinem Programm und dem Server besteht, kommt bei HTTP eine Verbindung nur in dem Moment zustande, wenn du z.B. beim Anklicken eines Links eine neue Seite anforderst. Dann wird, so vorhanden, diese Seite ausgeliefert. Fordert der Browser ein Bild, welches im HTML-Quelltext referenziert ist, an, ist dies schon eine neue Verbindung. Jede dieser Verbindungen wird nach der Auslieferung der angeforderten Ressource (Datei) aber wieder getrennt.

Fachchinesisch nennt man ein Protokoll, das so arbeitet, zustandslos.

Ob du nun 10 Minuten lang die Seite, die sich jetzt in deinem RAM befindet, liest, nach einer halben Minute eine andere Seite anforderst, weil du nicht gefunden hast, wonach du suchtest oder ob du gar den Browser schließt, kann von Seiten des Servers nicht festgestellt werden. "Er" weiß also nicht, ob du noch auf dieser Seite bist.

Die von Andreas angesprochenen Skripte nehmen somit nur eine Schätzung[1] aufgrund der Aufrufe der Seite der letzten x Minuten vor. Wenn du wirklich wissen willst, wieviele Leute deine Seite in einem bestimmten Zeitraum besucht haben, werte die Logdateien aus. Die meisten Hoster bieten dir schon eine Aufarbeitung derselben an. Einzelheiten dazu wirst du (höchstwahrscheinlich) in den FAQs deines Hosters finden.

[1] Darauf soll, so denke ich, Andreas' letzter Satz "Allzuviel würde ich diese Information aber nicht hineininterpretieren ..." hinweisen.

Tschö, Auge

Der Beitrag wurde von Auge bearbeitet: 17.05.2006 - 23:28
Go to the top of the page
 
+Quote Post
adoplin
Beitrag 19.05.2006 - 18:03
Beitrag #4


is getting harder


Gruppe: User
Beiträge: 12
Mitglied seit: 17.05.2006
Mitglieds-Nr.: 6.013



Hallo!

Also noch ne Frage:

Hab auf meiner Seite n Login.
Ob ma eingeloggt ist oder nicht wird in einer session variable (php) gespeichert. soweit ich weiß, werden diese session-daten solange die session besteht auf den server gestapelt.
gibt es keine möglichkeit, zu überprüfen, wieviele solcher dateien aufm server liegen um damit dann anzuzeigen wieviele leute eingeloggt sind??
Go to the top of the page
 
+Quote Post
harlequin
Beitrag 19.05.2006 - 20:32
Beitrag #5


DELETE FROM users WHERE search_count < 1
Gruppensymbol

Gruppe: Admin
Beiträge: 314
Mitglied seit: 15.07.1976
Wohnort: Osnabrück
Mitglieds-Nr.: 2



ZITAT(adoplin @ 19.05.2006 - 19:03) *
Hallo!

Also noch ne Frage:

Hab auf meiner Seite n Login.
Ob ma eingeloggt ist oder nicht wird in einer session variable (php) gespeichert. soweit ich weiß, werden diese session-daten solange die session besteht auf den server gestapelt.
gibt es keine möglichkeit, zu überprüfen, wieviele solcher dateien aufm server liegen um damit dann anzuzeigen wieviele leute eingeloggt sind??


moin!

Eigentlich ja, in Praxis aber eher nicht. Viele Webserver prügeln alle Sessiondaten in ein mehr oder minder globales tmp Verzeichnis. Und da die meisten PHP Anwendungen ihre Sessiondaten nicht selbst wieder löschen (was zwar in Theorie möglich ist, praktisch aber etwas trickreicher...), stapelt sich dort einiges. Und das Verzeichniss dann durchparsen, mit filectime oder ähnlichem die Zeit ermitteln, bewerten ob man die Daten nun nimmt oder nicht, usw. und so fort.

Ein anderer Weg ist es diese Daten weitestgehend in einer Datenbank zu speichern. Dies erleichtert einiges, man kann beispielsweise sehr simpel nach einem Timestamp, den man mitspeichert, solche Daten wie: gerade online, in den letzten 15 min, 24h, etc pp. ermitteln.
Und das Aufräumen macht auch mehr Spaß... smile.gif Wenn man sich dann dazu noch eine IP merkt hat man im Prinzip die Geschichte beisammen.
Es ist zwar nicht wirklich exakt, da viele User beispielsweise über einen Proxy surfen (kommt zB. bei AOL Kunden immer wieder vor), kannst du dort unter Umständen 10 Zugriffe von der gleichen IP in kurzer Zeit haben, die aber von sechs verschiedenen Leuten kommen.
Man könnte dort zwar mit _x_forwarded_for (frag mich nicht nach der genauen Variable, ich tippe grad aus der Hüfte... smile.gif ) versuchen die richtige IP herauszufinden, aber das ist eher ungenau. Denn viele Firmen nutzen auch einen eigenen Proxy - aus verschiedensten Gründen. Die meisten Firmen verwenden dann IPs aus einem privaten Adressbereich (192.168.x.x, 10.x.x.x, 172...... wie auch immer), und weil es so schön bequem ist oft 192.168.0.irgendwas..... mit anderen Worten du hast nicht wirklich eine Chance jemanden ganz genau zu identifizieren, du kannst dich höchstens annähern.
Mit einer Kombination aus IP, User Agent (Browser) und ähnlichen kommst du dann dicht genug an die Wahrheit ran, um diese kleine 'user online' Geschichte halbwegs glaubwürdig umzusetzen. smile.gif

Was ich damit sagen möchte und im Groben schliesse ich mich dabei Andreas und Auge an: Spar dir die Arbeit, wenn du es nicht unbedingt willst, denn brauchen tut so etwas niemand - glaub mir... wink.gif
Es ist eine nette Fingerübung, zugegeben, aber spätestens bei einer Seite, die normalen Traffic hat, sprich mehrere Hits pro Sekunde, permanent irgendwelche Suchmaschinen anwesend, welche die Seite indizieren wird das Ganze knifflig.
Denn dann reichen Sekunden nicht mehr als Maßstab, dann geht es mit der mircotime los. Dann kann man anfangen seinen Code wirklich zu tunen, glaub mir, dann wird es spannend - aber vermutlich nicht so wie du es gerne hast.... wink.gif

Ich nutze die Funktion hier im Forum weil sie bei der Software dabei ist - ich es also nicht selbst coden muss. Wäre sie es nicht, wäre es mir egal.

Aber um dir zu helfen: Hier gibt es das ein oder andere, brauchbare Skript, auch welche mit 'User Online' Feature. smile.gif Ich habe sie mir nicht angesehen, kann also über die Qualität nichts sagen, probier sie doch einfach mal aus (vorzugsweise auf einem Testsystem, wo es niemanden weh tut.... wink.gif ), aber die Kernaussage bleibt bestehen: Akurat, sprich 100% korrekt kann keines dieser Skripte sein......

have fun!
Lars
Go to the top of the page
 
+Quote Post
adoplin
Beitrag 20.05.2006 - 6:28
Beitrag #6


is getting harder


Gruppe: User
Beiträge: 12
Mitglied seit: 17.05.2006
Mitglieds-Nr.: 6.013



Hi!

Naja den Stress spar ich mit dann halt dry.gif

Fänds halt schon so ne sidebar, wo alle user die grad im geschützten bereich sind angezeigt werden.

Naja

MfG
Go to the top of the page
 
+Quote Post
harlequin
Beitrag 20.05.2006 - 12:09
Beitrag #7


DELETE FROM users WHERE search_count < 1
Gruppensymbol

Gruppe: Admin
Beiträge: 314
Mitglied seit: 15.07.1976
Wohnort: Osnabrück
Mitglieds-Nr.: 2



moin!

Ein kleines Beispiel:

Nimm eine Tabelle (die Tabelle mit den Benutzdaten zB oder eine seperate), dort sollten zwei Spalten, vorzugsweise Typs INT existieren, 'last_login' und 'last_click'. Sobald sich ein Benutzer mit validen Daten angemeldet hat machst du ein
QUELLTEXT
$query = "UPDATE tabellen_name SET last_login='".time()."' WHERE user_id='".$_SESSION['user_id']."'";
$result = mysql_query($query, $wiedeineDBVerbindungauchheissenmag);


Bei einem Klick entsprechend analog:
QUELLTEXT
$query = "UPDATE tabellen_name SET last_click='".time()."' WHERE user_id='".$_SESSION['user_id']."'";
  $result = mysql_query($query, $wiedeineDBVerbindungauchheissenmag);


Nun hast du dort immer den letzten Login und den Zeitpunkt der letzten Aktivität drin und kannst entsprechend deine SELECTs abfeuern:
QUELLTEXT
$vorfuenfzehnminuten = time()-900;
$query = "SELECT user_name FROM tabellen_name WHERE
last_click>='".$vorfuenfzehnminuten."' ORDER BY last_click DESC";
  $result = mysql_query($query, $wiedeineDBVerbindungauchheissenmag);
while ($row = mysql_fetch_assoc($result)) {
    $user_online[] = $row['user_name'];
}
mysql_free_result($result);
// Ausgabe, da solltest du vorher prüfen, ob tatsächlich etwas auszugeben ist.
echo count($user_online).' Benutzer online:<br />';
echo @implode('<br />', $user_online);
// das @ - Zeichen verhindert, dass PHP eine Warnung herausgibt, sollte $user_online leer sein,
// oder garnicht existieren.


Im Prinzip sollte es das sein. Wie gesagt, es ist ein kurzes Beispiel, um dir eine Anregung zu geben. Dies funktioniert natürlich nur mit angemeldeten User, normale Besucher werden nicht berücksichtigt. smile.gif

have fun!
Lars
Go to the top of the page
 
+Quote Post
adoplin
Beitrag 20.05.2006 - 16:38
Beitrag #8


is getting harder


Gruppe: User
Beiträge: 12
Mitglied seit: 17.05.2006
Mitglieds-Nr.: 6.013



Hi there

THX
Das werde ich dann mal ausprobieren

MfG
Go to the top of the page
 
+Quote Post
adoplin
Beitrag 21.05.2006 - 10:03
Beitrag #9


is getting harder


Gruppe: User
Beiträge: 12
Mitglied seit: 17.05.2006
Mitglieds-Nr.: 6.013



hallo

Also des funktioniert jetzt zu meiner Zufriedenheit.
Nicht ganz akkurat zwar aber man hat so etwa ne ahnung wer inletzter zeit eingeloggt war.

wie sieht's mit nem hidden frame aus mit nem meta refresch=0 der last_click setzt.
meint ihr das wäre ne möglichkeit, die user die sich nicht ausloggen dennoch aus der user_online liste zu kriegen??

grüße
Go to the top of the page
 
+Quote Post
Google Bot
Beitrag
Beitrag #


Google Ads









Go to the top of the page
 
Quote Post

Reply to this topicStart new topic
1 Besucher lesen dieses Thema (Gäste: 1 | Anonyme Besucher: 0)
0 Mitglieder:

 



RSS Vereinfachte Darstellung Aktuelles Datum: 28.03.2024 - 13:33

taschenkalender
expertise-panel IPS Driver Error

IPS Driver Error

There appears to be an error with the database.
You can try to refresh the page by clicking here