Cookie
Cookie-urile sunt fisiere text stocate in computer-ul clientului si sunt folosite la urmarirea utilizatorului. PHP suporta cookie-urile HTTP.
Sunt 3 pasi in identificarea unui utilizator:
La urmatoarea vizita browserul va trimite informatiile serverului, iar serverul le va folosi pentru a identifica utilizatorul.
- Scriptul de pe server seteaza un cookie in browser (ex: nume, email, id, etc).
- Browserul stocheaza informatia pe computerul utilizatorului
In acest articol am sa va invat sa setati, sa accesati si sa stergeti cooki-urile.Anatomia unui Cookie
Cookie-urile sunt de obicei headere HTTP (desi javaScript poate seta cookie-uri direct in browser). Un script PHP ce seteaza un cookie trimite un header ce arata ceva de forma:
HTTP/1.1 200 OK Date: Fri, 04 Feb 2000 21:03:38 GMT Server: Apache/1.3.9 (UNIX) PHP/4.0b3 Set-Cookie: name=xyz; expires=Friday, 04-Feb-07 22:03:38 GMT; path=/; domain=invata-programare.ro Connection: close Content-Type: text/html
Se poate observa clar ca atunci cand setezi un cookie setezi niste perechi nume-valoare, printre care se gasesc o data GMT, o locatie, un domeniu, etc. Campul expires este o instructiune catre browser care ii spune acestuia cand sa “uite” acel cookie.
Daca browserul este configurat sa stocheze cookie-uri, o va tine activa pana la data de expirare. Daca utilizatorul va naviga pe o pagina ce se potriveste cu path-ul sau cu domeniul din cookie, acesta va fi trimisa din nou catre server. Headerele browserului au forma:
GET / HTTP/1.0 Connection: Keep-Alive User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc) Host: zink.demon.co.uk:1126 Accept: image/gif, */* Accept-Encoding: gzip Accept-Language: en Accept-Charset: iso-8859-1,*,utf-8 Cookie: name=xyz
Dupa aceea scriptul PHP va avea acces la cookie prin intermediul variabilelor de mediu $_COOKIE sau $HTTP_COOKIE_VARS[] ce pastreaza prechile nume-valoare.
Setarea unui cookie in PHP
PHP ne pune la dispozitie functia setcookie() pentru a seta un cookie nou. Aceasta functie are nevoie de 6 argumente si trebuie apelata inaintea tag-ului <html>. Aceasta functie trebuie sa fie apelata pentru fiecare cookie setat.
setcookie(name, value, expire, path, domain, security);
Avem urmatoarele argumente:
security – Acest argument se seteaza la 1 pentru a transmite cookie-ul numai prin conexiune sigura (HTTPS) sau se seteaza la 0 pentru a functiona si pe conexiune normala (HTTP)
- name – acest argument seteaza numele cookie-ului
- value – acest argument stocheaza informatia de indentificare a userului (nume, email, id, etc)
- expire – acesta specifica un timp in secunde (de la 1 ianuarie 1970). Daca acest argument nu este setat cookie-ul expira cand este inchis browserul
- path – acest argument specifica directorul pentru care cookie-ul este valid. Un simplu slash face cookie-ul valid pe toate directoarele.
- domain – acest argument specifica domeniul.
Un exemplu de creat cookie-uri in PHP:
<?php setcookie("name", "Stefanescu Mihai", time()+3600, "/","", 0); setcookie("age", "36", time()+3600, "/", "", 0); ?> <html> <head> <title>Setare Coookie in PHP</title> </head> <body> <?php echo "Setare Cookies"; ?> </body> </html>
Accesarea unui cookie in PHP
In PHP exista mai multe moduri de a accesa un cookie. Cel mai simplu mod este folosind fie $_COOKIE sau $HTTP_COOKIE_VARS (incepand cu PHP 4.1 $HTTP_COOKIE_VARS a fost deprecated).
<html> <head> <title>Accesare Cookies in PHP</title> </head> <body> <?php echo $_COOKIE["name"]. "<br />"; echo $_COOKIE["age"] . "<br />"; ?> </body> </html>
Puteti folosi functia isset() pentru a verifica daca un cookie este setat:
<html> <head> <title>Accesare Cookies in PHP</title> </head> <body> <?php if( isset($_COOKIE["name"])){ echo "Salut " . $_COOKIE["name"] . "<br />"; }else{ echo "scuze, nu te recunosc..." . "<br />"; } ?> </body> </html>
Stergerea unui Cookie
Pentru a sterge un cookie trebuie sa folosim functia setcookie pentru a seta cookie-ul respectiv cu o data ce deja a expirat.
<?php setcookie( "nume", "", time()- 60, "/","", 0); setcookie( "varsta", "", time()- 60, "/","", 0); ?> <html> <head> <title>Stergere Cookies in PHP</title> </head> <body> <?php echo "Cookie Sters"; ?> </body> </html>