Autor Zpráva
regvac
Profil *
Ahoj,
mohl by mi někdo poradit, jak zjistit, že je nějaký uživatel přihlášen. Mám na stránkách diskuzi (chat) a chtěl bych, aby ostatní věděli, kdo je právě přihlášen online.

Mám stránky, na které se musí každý uživatel přihlásit přes jméno a heslo.
Seznam uživatelů mám v MySql tabulce definované se sloupci (id,jmeno,heslo,status). Pokud se uživatel přihlásí, tak se jeho status změní na online) a zároveň to zapíše do jiné databáze čas přihlášení a jméno uživatele. Ze stránek se také odhlašuje přes tlačítko, na které je navázána funkce, které změní status na offline. Problém je ale u tohoto "amatérského" řešení v tom, že pokus se uživatel takto neodhlásí, zůstane jeho status stále online, i když už brouzdá někde jinde. Postačí mi kontrolovat, zda je někde na stránkách, konkrétní stránku zjistit nepotřebuji (šlo by to vůbec?). Jakou funkcí na to?

Moc dík
Joker
Profil
regvac
Obvykle se to dělá tak, že se uloží čas poslední aktivity a online uživatel se změní na offline buď tím, že se odhlásí, nebo je určitý čas neaktivní.
Šlo by udělat samozřejmě i jiná řešení, například pomocí AJAX, klientský skript by mohl v pravidelných intervalech posílat jakýsi "ping" na server. Muselo by to ale nějak řešit vypnutý Javascript a podobně.
regvac
Profil *
A jak se zjistí, zuda je určitý čas neaktivní?
regvac
Profil *
A jak zjistím, že je nějaký čas neaktivní?
Joker
Profil
Při každé návštěvě nějaké stránky se aktualizuje čas poslední aktivity a při výběru online uživatelů se jednoduše vezmou ti, jejichž čas poslední aktivity je větší, než teď mínus něco.
deter
Profil
regvac: já to mám uděláno takto: ve sloupci cas mám čas jeho poslední aktivity (v timestampu) a dotaz, který vypíše jen uživatele, kteří byli aktivní v posledních deseti minutách (600 vteřin) vypadá takto:
SELECT * FROM users WHERE cas BETWEEN UNIX_TIMESTAMP()-600 AND UNIX_TIMESTAMP()

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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

0