Autor Zpráva
dms
Profil *
potřeboval bych vyvolat mysql událost při zavření prohlížeče nebo při přechodu na jinou stránku... jediné co sem našel je funkce onunload v JS ale to mi moc nepomůže... existuje tedy něco takového i pro PHP a tím pádem použití na přepsání dat v mysql? nebo jakým jiným způsobem řešit stav uživatelů na stánkách (myslím online, offline, nebo v jaké sekci se právě nachází), což jsem chtěl řešit přes mysql přepsáním statusu při zavření prohlížeče... díky za nápady
liborse
Profil
Potřeboval bych to také zjistit, protože potřebuji, když se odhlásí uživatel, aby se změnila hodnota v databázi, je to kvůli konflitkům při úpravě článků...
BetaCam
Profil
dms
Status se většinou řeší tak, že poslední aktivita na webu + 5 minut = online jinak offline
BetaCam
Profil
liborse
Potřeboval bych to také zjistit, protože potřebuji, když se odhlásí uživatel, aby se změnila hodnota v databázi, je to kvůli konflitkům při úpravě článků...

V podstate to samé.
imploder
Profil
nebo jakým jiným způsobem řešit stav uživatelů na stánkách (myslím online, offline, nebo v jaké sekci se právě nachází)
Běžně se to měří jako počet uživatelů aktivních v posledních X minutách (většinou 5 nebo tak nějak). Jestli se ti chce otravovat prohlížeč při zavření okna, můžeš ho přimět poslat HTTP požadavek na server při zmíněném onunload přes AJAX. Určitě tam ale dej lhůtu, po které se uživatel automaticky považuje za offline pro případ, že nebude vykonán - pád uživatelova systému, vypnutý JS nebo jiné nepředvídatelné události.
dms
Profil *
BetaCam
ok znamená to sice trochu úprav ale vím jak to udělat jenže jsem chtěl jiné řešení které je asi nemožné protože pro php asi nic při opuštění stránky neexistuje
BetaCam
Profil
dms
Problém je v tom, že nelze zajistit to aby se něco při zavření prohlížeče vykonalo. Stejmě tam furt budeš muset mít nějakej limit
dms
Profil *
BetaCam
ok myslel sem si to ale rači jsem se zeptal... psal jsem sem poprvý a nečekal jsem odpověď ve 12 večer do 5ti minut :D takže díky
dms
Profil *
ještě mě napdala celkem jedna měnší prasárnička... do stránky vložit frame se stránkou (někam do rohu neviditelně pro uživatele) která by měla třeba každých 15 vteřin autorefresh a jenom php kod na zapsaní timestampu... tím by se zaručilo to, že by byl uživatel oinline i kdyby článek čet třeba 15 minut a nic nedělal... je to asi špatná volba ale určitě by fungovala ;)
BetaCam
Profil
dms
která by měla třeba každých 15 vteřin autorefresh a jenom php kod na zapsaní timestampu...

Ano, ale zas to nic neřeší. Po vypnutí JS seš zase tam kde si byl. :)

Nelze zajistit objektivnost.
liborse
Profil
No, zkusím to řešit tak, že při editaci článku se při jeho otevření zapíše hodnota s názvem uživatele a že je editován a pak to zkusím vyřešit tak, že pokud bude chtít upravovat článek jiný uživatel a článek bude označen jako editovaný A uživatel se nebude shodovat s aktuálním "editorem", tak mu bude napsáno, sorry, článek je upravován, přijď později. Poté se upravujucí uživatel odhlásí, dejme tomu, že neuloží článek, v databázi bude článek stále označen jako upravovaný + upravovaný uživatelem X. Bude tam tedy ještě podmínka, která bude zjišťovat, že uživatel X je opravdu přihlášen, v opačném případě článek bude upravovatelný.... No, stále to nevidím jako dokonalé řešení.

Napadla mě ještě jiná možnost a vůbec si nejsem jist, že to jde (krom LOCK TABLES, které ale nefunguje všude!!) Ten údaj o editaci by se po nějaké době sám vrátil na původní hodnotu 0, je na to v mysql nějaká funkce? Asi je to nesmysl, co? Ale výrazně by to ulehčilo můj problém... Podobně by se dali řešit i uživatelé, neníliž pravda... Ano, šel by použít i způsob, jak bylo dáno výše, ale tam je problém co když platnost sezení uběhne dříve??

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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