Tutorial PHP – lucrul cu cookies

PHP

1. Lucrul cu cookies în PHP

De obicei, la reîncărcarea unei pagini de tip PHP se resetează toate variabilele create anterior în script, astfel pierzându-se toate calculele efectuate. Uneori, însă, avem nevoie de a memora unele date despre utilizatorul care accesează pagina noastră pentru al recunoaşte de fiecare dată când revine la ea. Pentru aceasta există nişte containere de date (nişte variabile), numite cookies, care sunt stocate în cache-ul browser-ului clientului şi sunt pasate paginii noastre web de pe server (scriptului php) când clientul revine.

Pe scurt – un cookie este o variabilă salvată în browserul clientului de către noi pentru a o prelua mai târziu.

Din punct de vedere al programatorului, un cookie este o metodă extrem de nesigură de stocare a datelor. Aceste date fiind stocate pe calculatorul clientului, pot fi şterse de către el intenţionat, pot fi şterse automat de către browserul clientului, sau în cazul în care apare vre-o defecţiune la hard diskul clientului şi se pierde toată informaţia de pe el – se pierde şi informaţia noastră stocată în cookies. Mai mult de atât, clientul poate specifica în opţiunile browser-ului ca acesta să nu accepte nici un cookie. Oricum, lucrul cu cookies este destul de răspândit deoarece sunt de mare folos la stocarea unor porţiuni mici de informaţie temporară (deobicei pentru statistici).

De reţinut este faptul că nu trebuie salvată informaţie senzitivă sau un volum mare de date într-un cookie şi nu trebuie reutilizată informaţia unui cooke fără a fi verficată mai întâi. Cookie-ul salvat pe calculatorul clientului poate fi citit şi modificat foarte uşor de către acesta.
Ceea ce priveşte limitele de stocare a cookies de către browser, acesta poate salva nu mai puţin de 300 de cookies în total şi nu mai puţin de 20 de cookie per domeniu. Mărimea unui cookie nu trebuie să depăşească 4096bytes (4Kb).

Datele unui cookie stocate într-un browser sunt transmise serverului prin headere. Structura header-ului este următoarea:

Set-Cookie: username=php_lec; path=/; expires=Mon, 09-Dec-2009 13:46:00 GMT; domain=example.com

Fiecare cookie are:
• denumire
• valoare
• dată de expirare
• calea pentru care e valabil
• domeniul pentru care e valabil

În exemplul de mai sus, se transmite un cookie prin HTTP Headers de la client spre server cu denumirea “username” şi valoarea “php_lec”, care expiră la data de 9 decembrie 2009 şi este valabil pentru întreg site-ul (domeniul).

Pentru a seta un cookie din PHP în browser-ul clientului se foloseşte funcţia setcookie($name, $value, $expire, $path, $domain). Cu ajutorul ei setăm un cookie cu denumirea $name, valoarea $value, care expiră la data $expire, valabil din calea $path pentru domeniul $domain. Link: http://www.php.net/manual/en/function.setcookie.php

Exemplu:
setcookie(‘username’, ‘php_lec’, time() + 60 * 60 * 24 * 3, ‘/’, ‘example.com’);

Parametrul $name (cu valoarea “username”) este obligatoriu. El va deveni numele cookie-ul şi îl va diferenţia de celelalte cookies setate de noi. Deci, trebuie să fie unic.

Parametrul $value (cu valoarea “php_lec”) nu este obligatoriu. El reprezintă valoarea cookie-ului.

Parametrul $expire (cu valoarea time() + 60 * 60 * 24 * 3) reprezintă data la care va expira cookie-ul în format Unix Timestamp – numărul de secunde de la apariţia epocii Unix. Pentru aceasta se foloseşte funcţia time(), care returnează numărul de secunde ce a trecut de la Unix Epoch până acum şi se adaugă un număr de secunde pentru care dorim să fie valabil cokie-ul. În cazul nostru am setat cookie-ul pentru 3 zile din momentul de acum: Unix Epoch Time + 60 sec * 60 min * 24 ore * 3 zile. Dacă nu specificăm acest parametru, atunci cookie-ul va fi şters de browser la închiderea acestuia. Link spre funcţia time(): http://www.php.net/manual/en/function.time.php

Parametrul $path (cu valoarea “/”) este opţional. De obicei când setăm un cookie, îl vom putea accesa din directorul de unde l-am setat şi în subdirectoriile lui. Dacă setăm $path cu “/test”, atunci cookie-ul va fi valabil doar pentru calea www.example.com/test/. Pentru a-l putea accesa pe tot domeniul setăm path-ul cu ‘/’, ce reprezintă calea de root al domeniului.

Parametrul $domain se foloseşte de obicei în cazul în care dorim ca un cookie să fie valabil doar pentru domeniul “example.com” nu şi pentru subdomeniul “test.example.com”. În practică se foloseşte foarte rar acest parametru al funcţiei.

Cookies fiind transmis spre server prin headers trebuie setat înaintea afişării oricărui mesaj PHP sau HTML!!!

Pentru a şterge un cookie setat mai devreme, se setează acelaşi cookie însă parametrul $expire primind o valoare negativă sau zero.

Exemplu ştergere cookie setat mai sus:

setcookie(‘username’, ”, 0, ‘/’, ‘example.com’);

Pentru accesarea cookies deja setate în PHP se verifică variabila $_COOKIE setată automat de PHP şi conţine toate cookies setate până acum (care nu au expirat încă).

Exemplu accesare cookie setat mai sus:

echo $_COOKIE[‘username’];

var_dump($_COOKIE) – afişează totul din arrayul $_COOKIE

Tags: ,



Alte articole si tutoriale:
« »

Oferta limitata eBook gratuit: DUBLEZA-TI VENITUL PRIN CUNOSTINTELE DE IT

Inscrie-te la newsletter si vei primi un eBook gratuit. Vei fi si informat despre ofertele speciale, tutoriale gratis si discount-urile pentru cursurile LEC Academy.

Download ebook
×

Abonare email

Accesul la tutorialele gratuite se face pe baza inscrierii la newsletter. Inscrie-te la newsletter-ul LEC Academy si ai acces la peste 40 de lectii gratuite. Daca doresti, vei fi informat despre ofertele speciale, promotiile si discount-urile pentru cursurile LEC Academy.

Vezi lectii gratis
×