• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Useronlinezeit

Status
Für weitere Antworten geschlossen.

marlin-b

Neues Mitglied
Hallo Leutz,
ich möchte für meine Homepage eine übersicht machen,
wer wann wie lange online war.

Daher habe ich eine MySQL Tabelle angelegt:
#################
# id # status # time #
#################

In dieser Tabelle wird protokoliert, wenn ein User sich einloggt
id = 1
status = online
time = 1209915898

und wenn dieser nichts mehr macht
id = 1
status = offline
time = 1209919898

Diese Daten habe ich nun eine Woche lang gesammelt, leider ohne mir gedanken darüber gemacht zu haben wie man diese Auswerten könnte...

Ich würde gerne daraus berechnen können:
1. eine Zeitleiste in der angezeigt wird, wann der user online war
2. gesammtzeit online am Tag/Woche

Wie könnte ich sowas verwirklichen?


mfg. Marlin

Ps: Wenn jemand es für Geld macht, dann einfach PN an mich ;-)
 
Hallo,

eigentlich kann man das gar nicht machen, denn man kann eine echte Onlinezeit gar nicht ermitteln. Der Server bekommt ja nur die Anfrage, eine Seite auszuliefern. Wie lange sich der Nutzer diese Seite ansieht, oder ob er gar von seinem Arbeitsplatz aufsteht, die Seite aber immer noch am Bildschirm hat, erfährst Du ja gar nicht.
Auch über ein Login geht das nicht akkurat, weil jemand eine Website auch verlassen kann, ohne sich auszuloggen.

Gruß,
-Efchen
 
Du könntest mit Ajax z.b. alle 5 oder 10 sekunden eine anfrage abschicken und dem user dann weitere 5 oder 10 sekunden gutschreiben

und wenn ne minute nix gekommen ist kannst den danna uch gleich ausloggen ^^
 
Moin,

Du könntest mit Ajax z.b. alle 5 oder 10 sekunden eine anfrage abschicken ... und wenn ne minute nix gekommen ist kannst den danna uch gleich ausloggen
Jau, so dass der Besucher die Site nicht nutzen kann, wenn er JavaScript deaktiviert hat? Schlechte Idee...

Gruß,
-Efchen
 
Moin,


Jau, so dass der Besucher die Site nicht nutzen kann, wenn er JavaScript deaktiviert hat? Schlechte Idee...

Gruß,
-Efchen

Es handelt sich dabei um ein sehr einfaches Browsergame ;-)
Wenn der User nur auf der Seite ist, dann fliegt er aus dem Spiel raus.

Ich hatte überlegt, ob ich einfach alle Zeiten auf 10 runde, sprich 15:36 auf 15:40 usw. dann muss ich "nur" noch eine Schleife machen, die prüft ob um 15:30 der User online war und daraufhin eine Ausgabe macht.

Jedoch weiß ich nicht wie ich das machen könnte.
1. Wenn die Zeit auf 15:56, dass diese dann auf 16:00 gerundet wird.
2. Wo sollte die schleife Anfangen und wo aufhören?
3. Wenn die Schleife bei X anfängt, der user aber schon online ist, dann stimmen die Ergebnisse nicht mehr so ganz...

Ich hoffe hier gibt es noch ein par schlaue Köpfe :D


mfg
mfg.
 
Efchen überleg dir doch mal was du sagst...
Wie viele seiten kennst du auf denen du ohne extras wie JavaScript oder Flash keinen meter weit kommen würdest?
Youtube, MySpace, Flickr, ...

Diese Liste könnte ich endlos fortsetzen und alle sind große Community seiten!

Selbst wenn man JavaScript abgeschaltet hat kann man es doch temporär für etwas erlauben das man gerne macht! Wilkommen im Jahr 2008!

Ps: Mein Vorschlag ist für ein Browsergame gut geeignet!
 
Moin.

Efchen überleg dir doch mal was du sagst.
Du kannst gerne darlegen, was an der Aussage falsch ist. Du wirst nichts finden.

Wie viele seiten kennst du auf denen du ohne extras wie JavaScript oder Flash keinen meter weit kommen würdest?
Wahrscheinlich etliche. Die können dann einige ganz oder teilweise nicht nutzen. Das ist nicht immer fair und sicherlich nicht barrierefrei. Ob Du das gut findest oder ich nicht, ist dabei völlig irrelevant. Es ist halt so.

Youtube, MySpace, Flickr
Diese Liste könnte ich endlos fortsetzen und alle sind große Community seiten!
Alles Seiten, ohne die kein Mensch heute mehr leben könnte...!

Selbst wenn man JavaScript abgeschaltet hat kann man es doch temporär für etwas erlauben das man gerne macht! Wilkommen im Jahr 2008!
Natürlich kann man das. Und das muss auch nicht zwangsläufig heißen, dass dann der Internet Exploder, den man vielleicht venutzt, sofort 1001 Viren auf dem Computer einschleust oder sonstige Sicherheitslücken, die durch ActiveScripting offen stehen, sofort ausgenutzt werden. Aber das hab ich ja auch gar nicht niemals nie behauptet.

Es gibt viele Gründe, warum jemand ein optionales Browserfeature nicht nutzt. Manchmal ist das auch nicht immer freiwillig. Und wenn man diese Features dann in seiner Website nutzt, muss man abwägen, für welche Aufgaben man sowas nutzen sollte. Ich bin sicher, die meisten Communities, die Du oben nennst, sind auch ohne JavaScript nutzbar, wennauch vielleicht nicht so komfortabel. Jemanden rauszuschmeißen, weil er kein JS aktiviert hat, obwohl man JS nur dazu nutzt, eine Online-Zeit zu protokollieren ist IMHO das Letzte. Ein automatisches Expire einer Session geht serverseitig besser und barrierefrei. Willkommen im Jahr 2008.

Mein Vorschlag ist für ein Browsergame gut geeignet!
Vermutlich ist das Browsergame selbst auch nicht ohne JavaScript spielbar. Dieses Fakt wurde erst nach meiner Antwort offen gelegt.

-Efchen
 
Du hättest natürlich recht... aber auch nur, wenn er eine Seite bauen will ohne die heute keiner mehr leben könnte :-P

Und ganz klar ist Ajax die einzige Möglichkeit das wenigstens halbwegs genau hinzubekommen.

MFG Miah :)

Ps: Das ihr immer so viel schreiben müsst, wenn ihr euch angegriffen fühlt :-D :-*
 
So jetzt werden wir alle erst mal wieder Freunde^^

Das mit der Onlinezweit habe ich schon gelöst.
Die Daten sind alle in der MySQL-Tabelle, und das Problem ist, wie man diese Auswerten könnte.

mfg. Marlin

PS: Ohne Javascript/Flash kommste auf meiner Page nicht weit ;-)
 
du hast ja sucher eine session initialisiert
und du hast sicher auch eine datei in der die online zeit aktuallisiert wird...

die methode für faule währe nun einen unsichtbaren iframe auf deine page zu setzen mit dem ziel der datei die die online zeit aktuallisiert und und den mittels javascript alle 10 minuten neu zu laden (javascript beispiele solltest du problemlos unter google finden ^^)

die anspruchsfollere währe einen einfachen ajax request zu machen

Code:
var http = null;
if (window.XMLHttpRequest) {
   http = new XMLHttpRequest();
} else if (window.ActiveXObject) {
   http = new ActiveXObject("Microsoft.XMLHTTP");
}
if (http != null) {
   http.open("GET", "zeit_aendern.php", true);
   http.send(null);
}

ohne irgendeine rückgabe einfach nur ansprechen und praktisch sagen "ich bin noch da" ^^

umsetzen musst du es nun selber :P sollte ja aber kein problem sein ;)
 
if würds so machen:

Code:
var http = null;
if(window.XMLHttpRequest) {
    http = new XMLHttpRequest();
}
else if(window.ActiveXObject) {
    try {
        http = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(ex) {
        try {
            http = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(ex) {
        }
    }
}
Dann ist die neuere Version auch drin.
 
Das ist nicht mein Problem, da ich die Daten alle schon habe. Es geht m ir darum, wie man diese Auswerten könnte...
Habe schon überlegt wie man so eine Schleife machen könnte, aber weiß nicht wie und wo ich anfangen soll...
 
... jeder user hat eine spalte mit dem feld `lastAction` vom typ INT(15)
wenn du deine onlinezeitUpdate.php nun aufrufst passiert darin sowas

PHP:
$r = mysql_query("SELECT `lastAction`, FROM user ......");
$r = mysql_fetch_assoc($r);

mysql_query("UPDATE `user` SET `onlineTime`=`onlineTime`+".( time() - $r['lastAction'] ));

und schon fertig da versteh ich dein problem net ^^ xD
 
... jeder user hat eine spalte mit dem feld `lastAction` vom typ INT(15)
wenn du deine onlinezeitUpdate.php nun aufrufst passiert darin sowas

PHP:
$r = mysql_query("SELECT `lastAction`, FROM user ......");
$r = mysql_fetch_assoc($r);

mysql_query("UPDATE `user` SET `onlineTime`=`onlineTime`+".( time() - $r['lastAction'] ));

und schon fertig da versteh ich dein problem net ^^ xD

Ja das habe ich bemerkt^^

Also das mit online eintragen etc. habe ich alles schon. Ich Datenbank ist auch fertig und mit Daten der letzten Wochen gefüllt.

Daher habe ich schon 1. Wann der User online gegangen ist und 2. wann wieder offline.

Jetzt weiß ich "nur" nicht wie ich diese Daten (die ich schon habe) auswerten könnte. Wenn ich z.B. die Onlinezeit der letzten x Tage haben möchte.

mfg.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben