Pa i cookies i sessions se koriste da bi ti neke varijable bile dostupne svo vreme. Znači da se ne bi mučila da promenljive prenosiš sa stranice na stranicu preko GET ili POST metoda (npr. <a href="bla.php?ime=zoki">Link</a> pa onda to na sledećoj stranici retrivuješ sa $ime=$_GET['ime'];)... Zamisli samo da imaš 10 varijabli koje treba da su ti dostupne na svakoj stranici... U te svrhe koristiš cookies ili sessions da setuješ to što hoćeš da ti bude dostupno svo vreme.
Sad, ako je korisnik isključio primanje kukija, onda se moraju koristiti sesije. Sesije su meni baš elegantan način da imaš sve varijable koje hoćeš dostupne u bilo koje vreme.
Kada je sesija startovana, ona dobija unikatni session_id, koji se može čuvati na 2 mesta (u zavisnosti da li su cookies on ili off):
- u kukiju kod korisnika
ili
- se prenosi preko query stringa na kraju url-a
Ovaj session_id je u stvari ono što je najbitnije, jer on predstavlja vezu između tebe i tvojih varijabli kojima želiš da pristupaš svo vreme. Nije loše da se zna da se sve varijable u okviru jedne sesije ne nalaze u kukiju, već se nalaze na server-strani, znači na serveru se kreira specijalni fajl u kome se čuvaju sve varijable te sesije. Fajl dobija ime tipa "sess_brojsesije", npr. "sess_191b4df7d9a703ba51f097ad4c0fc1a4". Jedna sesija - jedan fajl.
Praksa:
Na primer na svakoj stranici na sajtu želiš da pozdraviš korisnika koji se prethodno ulogovao. Prvo ubaciš njegovo ime u $_SESSION array:
Code:
// prvo se uradi login procedura, bla bla bla....
// ako je sve u redu, dodaj ime usera u $_SESSION array
session_start();
$_SESSION['ime']=$username;
Dalje na bilo kojoj stranici da bi dobila ime korisnika, samo ideš:
Code:
session_start();
echo $_SESSION['ime'];
Obrati pažnju da session_start() mora uvek da se uradi, znači i kada kreiraš sesiju i kada pristupaš varijablama sesije, jer session_start() u stvari nalazi koji je session_id neke sesije i na osnovu toga pronalazi fajl na serveru u kome se nalaze sve varijable date sesije i na taj način one su ti dostupne. Ako se ne uradi session_start(), varijable sesije ti neće biti dostupne.
Da bi neku varijablu izbacila iz $_SESSION array-a, uradiš samo:
Code:
unset($_SESSION['ime']);
I npr. kada se korisnik izloguje, i hoćeš da uništiš sesiju, jer ti više ništa od varijabli iz te sesije nije potrebno, ideš:
Code:
session_destroy();
i time će tvoja sesija biti uništena.
I eto, to je ta nauka. Trebalo bi stvarno da prevedemo php manual na srpski jezik :)
[
Ovu poruku je menjao Judge Dred dana 12.03.2004. u 04:12 GMT]