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
Valjda sam dobro …
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.
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 '.
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.
$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}”;