Autor Zpráva
perwin
Profil
Ahoj,
potřeboval bych vědět, jak se dá vyrobit kód (zřejmě JS), který by zjišťoval, jestli uživatel hýbe po stránce myší, a kdyby přestal myší hýbat (např. by vypnul prohlížeč nebo stránky) třeba po dobu 10 minut, tak aby to pomocí PHP zapsalo do DB jeho poslední aktivitu (čas, kdy naposledy hýbal myší).
Děkuji

EDIT: Jde mi o nejspolehlivější zjištění poslední aktivity uživatele... a toto mě napadlo...
Lupa
Profil
Zrejme cez JS, ale to zas veľmi neodporúčam. Užívateľ si funkciu JS vie vypnúť v PC.
johnl
Profil
perwin:
Tvoje řešení mi nepřipadá moc dobré, někdo nemusí mít JS zapnutý, případně může na jeho straně docházet k nějaké chybě v JS apod.. Nejsnadnější je při kliknutí (tedy odeslání požadavku na server) uložit do db kdy k tomu došlo (čímž, máš k dispozici poslední aktivitu), pak jen porovnáváš jak moc je čas starý a podle toho poznáš zda je uživatel nebo není online..
Keeehi
Profil
Lupa:
A jak jinak by jsi to chtěl dělat? Ještě možná tak flash nebo java applet. A ty si snad uživatel nemůže vypnout?

perwin:
Problém tkví asi v tomto:
vypnul prohlížeč nebo stránky
- a s tím vypne i ten javascript, takže po těch deseti minutách už bude javascript deset minut vypnutý, takže už nic udělat nebude moct.

Ale pár možností tu je. Musíš ale počítat s tím, že to není 100%.
1) Jak psal Lupa, můžeš narazit na uživatele s vypnutým javascriptem (např. mobilní prohlížeč)
2) Ne všechny prohlížeče zvládnou stejné věci.

takže možnosti:
zavření okna: http://www.jakpsatweb.cz/javascript/udalosti.html#okno - onUnload
pohyb myši: http://www.jakpsatweb.cz/javascript/udalosti.html#mys - onMouseMove (nejspíše navázat u body)

Ale informace co takto získáš budou spíše orientační.

Pokud nevíš jak pomocí javascriptu spustit PHP script pro uložení do DB, tak hledej "AJAX".
Lupa
Profil
Keeehi:
Len podotknem, požívam systém, ktorý aj uviedol johnl, čiže php.
Ja som len objasnil perwin-ovi, že to čo chce sa dá urobiť cez JS, ale neodporúčam.
_es
Profil
perwin:
http://diskuse.jakpsatweb.cz/?action=vthread&forum=3&topic=124377
perwin
Profil
Díky za vaše komentáře :-)
Keeehi:
No co vím, tak to onUnLoad není vůbec spolehlivé, natož onBeforeUnLoad.. co když vypne prohlížeč nebo PC? To asi moc platný nebude. Ale u toho pohybu myši - bloknu stránka pro uživatele, kteří nemají zapnutý JS a řeknu jim, aby si ho zapnuli. onMouseMove - tam je ten problém u vypnutí prohlížeče.
Děkuji za odpovědi
Keeehi
Profil
perwin:
A neříkal jsem, že získané informace budou pouze orientační?

bloknu stránka pro uživatele, kteří nemají zapnutý JS a řeknu jim, aby si ho zapnuli.
No to snad ne. A co ti chudáci, kteří si JS zapnout nemohou? (např. někteří uživatelé mobilních telefonů) - stránka by neměla být na javascriptu závislá.

Jediným spolehlivým řešením je, jak psal Lupa, zaznamenávat aktivitu na straně servru.

Osobně bych tato řešení zkombinoval. Když mi přijde požadavek na zobrazení určité stránky, tak čas a uživatele uložím do databáze. Tím bude online/offline stav fungovat pro všechny. A dále ti, kteří budou mít zapnutý javascript, budou pomocí něj při těch správných událostech odesílat požadavky na server, kde si zase uložím do DB uživatele a čas, takže se jejich aktivita nebude aktualizovat jen při přechodu mezi stránkami, ale třeba i při pohnutí myší. Lépe to asi moc vyřešit nejde.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0