Kako napraviti online status

Pozdrav,

dali neko zna kako da napravim online status, ja sam probo vako

e sad kad korisnik ode sa stranice a ne klikne na logout na profilu mu piše da je online još 15 minuta, a kako da napravim da kad korisnik klikne na logout da odmah mu na profilu piše da je offline?

možeš mu datum zadnje posjete odmah staviti na date(‘Y-m-d H:i:s’,time()-900) čim se odlogira, imao bi onda grešku u tome što bi imao možda pogrešno vrijeme zadnjeg osvježavanja stranice za 15min kod nekih članova, ali nije to tako strašno… Postoje i bolji načini samo pitanje je koliko ti to ustvari treba, ovo je za tebe najlakši i najbrži način.

Sad na pamet mozes u user tablicu staviti field last_login i field last_seen.
Svaki put kad naletis na tog usera a da je aktivan update fielda last_seen. A skriptu drugu napravis koja cekira usere koji su logirani i ali da im (last_seen - last_login) bude ne veci od 15 minuta :slight_smile:

Valjda sam dobro … :stuck_out_tongue:

Nego, dajte izbacujte tu ruznu naviku u SQLovima :

$s=“SELECT datum_zadnje_posjete FROM korisnici WHERE id_korisnika=’$i’”;

=’$i’

cemu navodni znakovi ako je numeric?? = $i je dovoljno i nek ti bude praksa da to radis.

Zašto da uklanjam navodnike kad radi i sa njima?

Zato sto po pravilu ne bi trebali da idu navodni znakovi, uci sto je pravilno a ne ono sto “radi”, mysql je takav pa trpi svasta. Danas sutra kad budes prelazio na neku drugu bazu (bilo sta osim mysql-a) takvo nesto ti nece raditi i onda ces biti ’ a zasto '.

U pravu je djomla, a vjerojatno se onda prvo i vrši casting u int sa stringa.

Pa, logičnije je pisati bez navodnika ukoliko je polje u tablici cjelobrojnog tipa.

Inače, samo ovako “dokumentaristički”:

Ako se stavi bez navodnika, a $i sadrži vrijednost tipa integer, onda PHP vrši pretvorbu iz integera u string kako bi složio string $s, to predaje MySQL-u koji parsira string s naredbom i negdje tijekom faze leksičke analize pretvara leksem broja (koji je string, je sve SQL naredbe su stringovi) u integer.

Ako stavi sa navodnicima, a $i sadrži vrijednost tipa integer, onda PHP opet vrši pretvorbu iz integera u string kako bi složio string $s, to predaje MySQL-u koji parsira string s naredbom i negdje tijekom faze leksičke analize kreira memorijski međusprenik za string s brojem, da bi tijekom izvođenja u nekom trenutku pretvorio taj string u integer.

Zapravo, najbolje bi bilo koristiti parametrizirane upite - biblioteka PDO ili Mysqli.

a šta kad je vaka variabla $_SESSION[‘id_korisnika’]

dali je dobro vako stavljati?

ili vako

generalno ja pisem ovako :

$s = “SELECT datum_zadnje_posjete FROM korisnici WHERE id_korisnika= {$_SESSION[‘id_korisnika’]}”;

ali radi security issua provjeravam uvijek sta mi dolazi u sessionu pa radim escape toga pa query na kraju izgleda, recimo ovako :

$idkorisnika = mysql_real_escape_string($_SESSION[‘id_korisnika’]); // ako je mysql
$s = “SELECT datum_zadnje_posjete FROM korisnici WHERE id_korisnika= {$idkorisnika}”;

ja mislim da nema potrebe da ja eskajpujem $_SESSION[‘id_korisnika’]

jer kad se korisnik loguje na iz baze uzima njegov id i sprema ga u session, tako nemože mjenjati korisnik podatke u $_SESSION[‘id_korisnika’]