Online ili ne?

Pozdrav, napravio sam chat koji ima bazu korisnika:

Ime |Online
Ime1|1
Ime2|0

To ispravno radi ali kada korisnik ugasi browser (preglednik), korisnik ostane online

Treba mi kod koji će se izvršiti kada se preglednik počne zatvarati.

Hvala

Zna li itko?

U tablicu kod korisnika stavi ‘last activity’ a.k.a zadnja aktivnost, gdje ce se svaki put kad posalje poruku, primi poruku ili sto vec, to apdejtati (update … set last_activity = time() where user_id = …). I onda gdje iscitavas online korisnike trazis:

[php]
$vrijemeUSekundama = 120; // kad korisnik ode ili nepise nista, koliko dugo ce pisati da je online (u sekundama)
$razlikaVremena = $lastActivityIzBaze + $vrijemeUSekundama;

if (time() < $razlikaVremena)
{
// online
}
else
{
// offline
}
[/php]

Hvala

Sada sam tek skužio da kada nema niti jedan korisnik online da se Online stupac u tablici ne može postaviti na 0.
To sam vidio iz MySql-a dok nitko nije bio online.

Jeli postoji neka funkcija koja se izvršava OnBrowserClose?

Pa ima ja mislim JS nešto onbeforeunload. Probaj s time.

nešto tipa
window.onbeforeleave = function() { }

u toj funkciji onda možeš odraditi ajax poziv gdje ćeš promijeniti vrijednost login online polja.

Ali to je onak bezveze. Bolje je to odraditi sa session-ima.

Upravo sam probao taj onbeforeleave, ali on izvrši kod čak kad se stranica refresha,
a u session-e se ne kužim. :neznam:

Može pomoć?

Hvala

[quote=“adios20000”]Upravo sam probao taj onbeforeleave, ali on izvrši kod čak kad se stranica refresha,
a u session-e se ne kužim. :neznam:

Može pomoć?

Hvala[/quote]

Pa zašto bi išta radio tako kad ti je već dao čovjek rješenje:

svaki puta kada neko pošalje poruku ili što već, neka se izvrši komanda koja će updateati last_activity polje kod dotičnog korisnika dakle

UPDATE SET last_activity=time() WHERE username=$username

i onda provjeravaj je li last_activity npr veći od 180 sekundi (jer 3 minute su sasvim dovoljne), ako jeste veći od 180 onda je korisnik offline, a ako je manji od 180 onda znači da korisnik tu nešto piše i konstantno mu se updatea last_activity polje

btw. nije mi jasno ovo tvoje

[quote=""]Sada sam tek skužio da kada nema niti jedan korisnik online da se Online stupac u tablici ne može postaviti na 0.
To sam vidio iz MySql-a dok nitko nije bio online.[/quote]

Zašto se ne bi mogao online stupac postaviti na 0? Nešto samo krivo radiš.

Znači ovako:
ako niti jedan korisnik nije online onda se kod za update last_activity nemože izvršiti!

[quote=“adios20000”]Znači ovako:
ako niti jedan korisnik nije online onda se kod za update last_activity nemože izvršiti![/quote]

So what? Prvi korisnik koji se prijavi pokrenut će kod za provjeru zadnje aktivnosti i sukladno tome obaviti zadane zadatke na tablici.

Savršeno dobro riješenje.

Puno hvala.
Nisam uopće razmišljao :krele:


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja