Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 24 odgovora
  • 7.795 pregleda

Najnovija ↓

Who is online? 02.07.2003. u 18:08 · pre 284 meseca #1
Kako da napravim sistem koji ce da proverava ko je online? Razmisljao sam da napravim posebnu tabelu u bazi u koji cu da stavim nick svakog novog clana ali onda ne znam kako da proverim da li je jos uvek aktivan.

Ako nisam krenuo dobrim putem, molim vas ispravite me...
Re: Who is online? 02.07.2003. u 18:39 · pre 284 meseca #2
Proveravaj vreme pristupa. Moras za svaku stranu koju je pogledao da mu upises vreme kada je bio, pa odredis neki interval od recimo 15 minuta i kazes "korisnici online u poslednjih 15 minuta: ...". Ujedno pri svakom upisu brises starije od 15 minuta iz tvoje temp tabele.

temp_tabela:
username (ili id)
timestamp

i samo citas i pises ta 2 polja.
Potpis
Goran Pilipović fka bluesman
Re: Who is online? 02.07.2003. u 18:59 · pre 284 meseca #3
mozes i da uradis svoje mysql funkcije za sesije pa da jednim udarcem ubijes
dve muve(imas u php-manualu primer) - ako budes radio evo saveta
za

function write ($id, $sess_data)
koristi REPLACE fju MySQL-a mnogo je elegantnija nego kombinacija
SELECT insert i update

nije je koristio ni onaj lik na:

http://www.cheetah-soft.com/csh/

mada je u pitanju dobar custom session handler. pogledaj obavezno
Potpis
Sima Kosmos iz dalekog svemira
Re: Who is online? 02.07.2003. u 19:38 · pre 284 meseca #4
Da, nisam se setio toga da svaki put proverim ko je "stariji" o 10 minuta...

Hvala...
Re: Who is online? 03.07.2003. u 05:34 · pre 284 meseca #5
Samo da dodam, ovo je moguce odraditi i za standradne sajtove, gde nema registrovanih korisnika. Npr. mozes da izlistas sve razlicite ip adrese sa kojih su pristupili korisnici na tvoj sajt u recimo, poslednjih 5 minuta.

A prebrojavanjem razlicitih ip adresa u poslednjih 5 min dobijas, naravno, broj online posetilaca :)
Re: Who is online? 03.07.2003. u 18:36 · pre 284 meseca #7
Opet ja i IP :-) Koga jednom zmija ujede ...

IP adrese su nepouzdane kao identifikacija... ali u ovom slucaju ipak moze da posluzi jer ti ne treba toliko striktno a i nista se ruzno nece desiti ako i pogresno ispises broj online korisnika.

Samo umestu username, cuvas u temp tabeli IP adrese i vreme pa opet radis iste provere samo ne radis sa username nego sa ip. Kao dodatak bih ti preporucio da koristis ip2long () [ili kako se vec zove funkcija] jer ona konvertuje IP adresu (string) u long format, a samim tim je i komparacija brza.
Potpis
Goran Pilipović fka bluesman
Re: Who is online? 03.07.2003. u 18:47 · pre 284 meseca #8
Razmisljao sam o tome, ali mislim da cu njih koristiti samo za neregistrovane korisnike, a za registrovane ne vidim razlog zasto ne bih koristio user_name...

I jos samo, ako moze neko da mi odgovori:
Kako da u kuki stavim vreme u obliku TIMESTAMP radi lakseg poredjenja?
Re: Who is online? 04.07.2003. u 03:24 · pre 284 meseca #9
e ja sam to probao...ne mogu sad da se setim... probaj uz pomoc date naredbe... meni je radilo.


takodje sam u bazi napravio jednu tabelu gde se svaki "korisnik" upisuje prilikom posete as brise se svaki stariji od 5 minuta... za sad radi ok :D
Potpis
http://www.vuknikolic.com
http://www.klopaj.com
Re: Who is online? 04.07.2003. u 14:07 · pre 284 meseca #10
Citat:
del-boy:
I jos samo, ako moze neko da mi odgovori:
Kako da u kuki stavim vreme u obliku TIMESTAMP radi lakseg poredjenja?


Ne zezaj, pa mozes da pises bilo sta. Kada pises u cookie pisi:
setcookie("timestamp", time(), "koliko ti traje cookie", "",getenv("HTTP_HOST"));

Ne znam sta je ovde problem?
Potpis
Goran Pilipović fka bluesman
Re: Who is online? 04.07.2003. u 17:57 · pre 284 meseca #11
Nisam dobro objasnio...

Ja uglavnom u bazi koristim TIMESTAMP i duzina mu je 14. E sada funkcija time() vraca ceo broj sa 10 cifara pa nisam mogao da ih uporedim, a posto sam vec napravio bazu, mrzelo me da menjam pa sam mislio da u kuki mogu da stavim ceo broj od 14 cifara za vreme...

Shvatas?

Ali sada nema veze, promenio sam bazu i sve je OK.
Re: Who is online? 05.07.2003. u 17:51 · pre 284 meseca #12
Sada meni nije jasno? Timestamp je timestamp i bez obrzira da li je iz mysql ili php vraca uvek isti broj za isti datum. Ti mozes u mysql bazi da koristis obican INT UNSIGNED da bi cuvao timestamp polje jer je to upravo long int - sto dobijas i iz php. Sada sam i pogledao storage requirements u mysql i tamo lepo puse 4 bytes sto znaci long int unsigned, pa je i maksimalna vrednost timestamp upravo maksimalna vrednost koja moze da se upise u 4 bajta, pa je zato i timestamp ogranicen za merenje vremena do 2037 (ako se dobro secam)...
Zakljucak, ne mozes mi reci da iz mysql i php dobijas 2 razlicite vrednosti za timestamp!
Potpis
Goran Pilipović fka bluesman
Re: Who is online? 05.07.2003. u 19:24 · pre 284 meseca #13
Ja ti nisam ni rekao da sam dobio razlicite vrednosti TIMESTAMPA u MySQLu i PHPu. Samo probaj da napravis u MySQL u nekoj tabeli polje TIMESTAMP i daj mu duzinu 14 i jos jedno sa duzinom 10. On ti vrati razlicite brojeve iako je to isto vreme. Ne znam zasto to...

Kada te brojeve izvlacis iz baze funkcijom date_format vrati istu vrednost tako da nema razlike.

Ako gresim, ispravi me, jer nisam ni ja siguran u ono sto pricam :). Samo iznosim svoje zakljucke...

Pozdrav
Re: Who is online? 05.07.2003. u 19:43 · pre 284 meseca #14
U MySQL-u polje TIMESTAMP se ne beleži u „Unix timestamp“ fazonu.

Unix timestamp je jedan neoznačeni ceo broj u 32 bita (kako bluesman već reče), i označava broj sekundi od 1. januara 1970. godine (takozvana „Unix epoha“).

MySQL beleži TIMESTAMP kao „GGGGMMDDČČMMSS“, pa je zato potrebno 14 mesta. Da bi obavio pretvaranje između dva zapisa, moraš da poznaješ osobine kalendara u kom se zapisuje datum u MySQL TIMESTAMP-u (Gregorijanski), ali najverovatnije i neka od funkcija u PHP-u nudi pretvaranje između datuma i Unix timestamp-a.
Potpis
Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
Re: Who is online? 05.07.2003. u 19:55 · pre 284 meseca #15
Da i ja mislim da je tako samo nisam znao da to lepo objasnim.

E sada ono sto me je zbunilo je to da MySQL prihvata TIMESTAMP i sa 10 znakova i vraca vrednosti normalo kao i sa 14.

Kako to?
Re: Who is online? 05.07.2003. u 20:17 · pre 284 meseca #16
MySQL u tom slučaju posmatra nenavedeno kao 0. Npr. ako navedeš samo 20030704, sat, minut i sekunde će biti 0. Ako navedeš 10 cifara, onda će samo minuti i sekunde biti 0. Takođe, ako za npr. mesec navedeš 14, onda će se dodati 1 na godinu, i mesec će biti 2=14-12.
Potpis
Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
Re: Who is online? 05.07.2003. u 20:18 · pre 284 meseca #17
Zato što si očigledno napravio tabelu sa TIMESTAMP(14).

i da ubaciš samo jedan znak vratiće ti 14 ili ako ne ubaciš nijedan znak vratiće ti 14 :Đ (odnosno mysql automatski stavlja TIMESTAMP sa servera ako nisi naveo u INSERT-u)

Pogledaj ovde za više informacija.

~Say FiQ
Re: Who is online? 05.07.2003. u 20:32 · pre 284 meseca #18
Da, znam da je dovoljno da samo unesem NULL u TIMESTAMP polje i on sam stavlja vrednost.

Nego mene zanima kako TIMESTAMP iz MySQLa mogu da pretvorim u broj sekundi Unix epohe. Treba mi da bih uporedio sa kukijem...

Imam par funkcija koje nesto muljaju sa kalendarom, pretvaraju ga iz jednog u drugi, a ja ne znam koju od njih treba koristiti.
Re: Who is online? 06.07.2003. u 04:15 · pre 284 meseca #19
Probaj ovo:

function mysql_timestamp_to_timestamp($dt) {
$yr=strval(substr($dt,0,4));
$mo=strval(substr($dt,4,2));
$da=strval(substr($dt,6,2));
$hr=strval(substr($dt,8,2));
$mi=strval(substr($dt,10,2));
$se=strval(substr($dt,10,2));

return mktime($hr,$mi,$se,$mo,$da,$yr);
}
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme