Tutorial PHP – lucrul cu cookies
4 apr. 2012, autor: LEC Academy
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
Alte articole si tutoriale:
« Mutarea e-mail-urilor Outlook in fisierele dorite | 6 modalitati de a lucra mai rapid in MS Outlook » |
Durata: 5 ore si 55 min
62 lectii, 51 lectii
Durata: 7 ore si 45 min
70 lectii, 10 exercitii
Durata: 3 ore si 14 min
100 lectii, 97 exercitii
Durata: 10 ore si 17 min
137 lectii, 16 exercitii
Durata: 4 ore si 46 min
62 lectii, 9 exercitii
Durata: 2 ore si 20 min
42 lectii, 39 exercitii
Durata: 1 ora si 50 min
56 lectii, 52 exercitii
Durata: 2 ore si 38 min
44 lectii, 41 exercitii
Durata: 2 ore si 27 min
55 lectii, 20 exercitii
Comunitate Facebook
Categorii tutoriale:
Arhiva:
- septembrie 2020
- iulie 2020
- iunie 2020
- mai 2020
- aprilie 2020
- martie 2020
- aprilie 2018
- decembrie 2016
- octombrie 2016
- septembrie 2016
- august 2016
- iulie 2016
- iunie 2016
- mai 2016
- aprilie 2016
- martie 2016
- februarie 2016
- decembrie 2015
- noiembrie 2015
- octombrie 2015
- septembrie 2015
- iulie 2015
- iunie 2015
- mai 2015
- aprilie 2015
- martie 2015
- februarie 2015
- ianuarie 2015
- decembrie 2014
- noiembrie 2014
- octombrie 2014
- septembrie 2014
- august 2014
- iulie 2014
- iunie 2014
- mai 2014
- aprilie 2014
- martie 2014
- februarie 2014
- ianuarie 2014
- decembrie 2013
- noiembrie 2013
- septembrie 2013
- iunie 2013
- februarie 2013
- ianuarie 2013
- octombrie 2012
- septembrie 2012
- august 2012
- iunie 2012
- mai 2012
- aprilie 2012
- martie 2012
- februarie 2012
- ianuarie 2012
- decembrie 2011
- noiembrie 2011
- octombrie 2011
- septembrie 2011
- august 2011
- iulie 2011
- iunie 2011
- mai 2011
- aprilie 2011
- martie 2011
- februarie 2011
- ianuarie 2011
- decembrie 2010
- noiembrie 2010
- octombrie 2010
- septembrie 2010
- august 2010
- iulie 2010
- iunie 2010
- mai 2010
- aprilie 2010
- martie 2010
- februarie 2010
- decembrie 2009
- noiembrie 2009
- septembrie 2009
- august 2009
- iulie 2009
- iunie 2009
- mai 2009