PHP - Kolačići (Cookies)


Šta je kolačić (cookies)

Kolačić je mala tekstualna datoteka koja vam omogućava da na računaru korisnika pohranite malu količinu podataka (gotovo 4 KB). Obično se koriste za praćenje informacija poput korisničkog imena, koje web lokacija može preuzeti kako bi personalizovali stranicu kada korisnik sljedeći put posjeti web sajt.



Postavljanje kolačića u PHP-u

Funkcija setcookie() koristi se za postavljanje kolačića u PHP-u. Obavezno pozovite funkciju setcookie() prije bilo kakvog izlaza koji generiše vaša skripta, inače kolačić neće biti postavljen. Osnovna sintaksa ove funkcije može se napisati kao:

setcookie(name, value, expire, path, domain, secure);

Parametri funkcije setcookie() imaju sljedeća značenja:

Parametar Opis
name Ime kolačića.
value Vrijednost kolačića. Nemojte čuvati osjetljive podatke jer se ova vrijednost pohranjuje na korisnikovom računaru.
expires Datum isteka u UNIX formatu vremenske oznake. Nakon ovog vremena kolačići će postati nepristupačni. Zadana vrijednost je 0.
path Navedite putanju na serveru za koju će kolačić biti dostupan. Ako je postavljeno na /, kolačić će biti dostupan na cijeloj domeni.
domain Navedite domenu za koju je kolačić dostupan, npr. www.ittutorijali.net.
secure Ovo polje, ako postoji, označava da kolačić treba slati samo ako postoji sigurna HTTPS veza.

Evo primjera koji koristi funkciju setcookie() za stvaranje kolačića s imenom username i dodijeli mu vrijednost Milos Mihaljica. Takođe navodi da će kolačić isteći nakon 30 dana (30 dana * 24 sata * 60 min * 60 sek).

<?php
// Postavljanje kolačića (cookie)
setcookie("username", "Milos Mihaljica", time()+30*24*60*60);
?>


Pristup vrijednostima kolačića

Superglobalna varijabla PHP $_COOKIE koristi se za pristup vrijednosti kolačića. Obično je to asocijativni niz koji sadrži listu svih vrijednosti kolačića koje je pretraživač poslao u trenutnom zahtjevu, a upisuje se imenom kolačića. Pojedinačnoj vrijednosti kolačića može se pristupiti pomoću standardne notacije niza, na primjer za prikaz kolačića username postavljenog u prethodnom primjeru, možete koristiti sljedeći kod.

<?php
// Pristup pojedinačnoj vrijednosti kolačića (cookie)
echo $_COOKIE["username"];
?>

PHP kod u gornjem primjeru daje sljedeći izlaz.


Milos Mihaljica


Dobra je praksa provjeriti da li je postavljen kolačić prije pristupanja njegovoj vrijednosti. Da biste to učinili, možete koristiti PHP funkciju isset(), poput ove:

<?php
// Provjera da li je postavljen kolačić ili ne
if(isset($_COOKIE["username"])){
    echo "Hi " . $_COOKIE["username"];
} else{
    echo "Welcome Guest!";
}
?>

Možete koristiti funkciju print_r() poput print_r($_COOKIE); da vidite strukturu ovog asocijativnog niza $_COOKIE.



Uklanjanje kolačića

Kolačić možete izbrisati pozivom iste funkcije setcookie() s imenom kolačića i bilo kojom vrijednošću (kao što je prazan string), međutim ovaj put vam treba postaviti datum isteka u prošlosti, kao što je prikazano u primjeru:

<?php
// Brisanje kolačića (cookie)
setcookie("username", "", time()-3600);
?>