[Tutorial PHP]Utilizarea variabilelor cookie

#1
Nume Tutorial:Utilizarea variabilelor cookie
Descriere:Utilizarea variabilelor cookie
Download:Nu necesita
Autor:Anonim
Sursa (Link-ul oficial):
tutorialeonline
Propria parere:Util.
Tutorialul:
Variabilele cookie sunt utile pentru stocarea preferinţelor utilizatorilor şi a altor informaţii care trebuie reţinute atunci când utilizatorul trece la o nouă pagină web. Valorile majorităţii variabilelor dispar atunci când scriptul PHP care le conţine îşi încheie execuţia. Spre deosebire de acestea, valorile variabilelor cookie se pot păstra un timp indefinit. Browserul utilizatorului stochează variabilele cookie în unitatea de hard-disk locală a utilizatorului.
La ce este utilă o variabilă cookie? De exemplu pentru păstrarea preferinţelor utilizatorului. Când utilizatorul revine la pagina vizitată, variabilele cookie permit browserului să recunoască utilizatorul şi să restaureze opţiunile selectate de utilizator. Din pacate, variabilele cookie nu constituie soluţia perfectă pentru un mediu de stocare pe termen lung şi prezintă o serie de dezavantaje cum ar fi:
- Un utilizator poate dezactiva variabilele cookie prin stabilirea unei opţiuni a browserului.
- În anumite situaţii, variabilele cookie pot fi vizualizate de alţi utilizatori.
- Un site poate stoca numai 20 de variabile cookie şi numai 4 KB de informaţii în unitatea de hdd locală a utilizatorului.

În ciuda acestor dezavantaje, variabilele cookie rămân cea mai populară tehnică pentru obţinerea unui mediu de stocare pe termen lung.

Accesul la o variabilă cookie

Dacă aţi creat o variabilă cookie, valoarea acesteia este automat pusă la dispoziţie ca variabilă PHP având acelaşi nume cu acela al variabilei cookie. De exemplu, să presupunem că aţi creat o variabilă cookie denumită "anotimp" şi că îi atribuiţi valoarea "vara". Această pereche nume-valoare este apoi pusă la dispoziţia fiecărui script PHP asociat paginilor dvs de web. Deci puteţi afişa valoarea variabilei cookie folosind următoarea instrucţiune:

echo "Valoarea variabilei cookie este $anotimp";

Această comandă va afişa:

Valoarea variabilei cookie este vara

Variabila PHP de tip tablou asociativ HTTP_COOKIE_VARS conţine numele şi valoarea fiecărei variabile cookie curentă. Dacă doriţi să vizualizaţi fiecare variabilă cookie disponibilă şi valoarea acesteia, puteţi invoca funcţia phpinfo(), care afişează valoarea tabloului HTTP_COOKIE_VARS. De asemenea puteţi folosi şi următorul script pentru a afişa toate numele şi valorile variabilelor cookies:

foreach ($HTTP_COOKIE_VARS as $nume => $valoare)
echo "<br>$nume => $valoare";

Crearea unei variabile cookie

Pentru a crea o variabilă cookie, trebuie invocată funcţia setcookie(), care are următoarea sintaxă:

setcookie(nume, valoare, expirare)

Argumentul nume specifică numele variabilei cookie, iar argumentul valoare specifică valoarea variabilei. Argumentul expirare indică momentul expirării variabilei cookie; după ora specificată, variabila cookie nu mai este accesibilă. În general, este convenabil să se specifice momentul expirării folosind funcţia time(), care returnează intervalul de timp (exprimat în secunde) scurs de la 1 ianuarie 1970. Puteţi adăuga o valoare de tip decalaj (offset), care specifică intervalul de timp pe durata căruia variabila cookie trebuie să fie accesibilă. De exemplu:

setcookie ("anotimp", "vara", time()+3600);

Această instrucţiune creează o variabilă cookie denumită "anotimp", care are valoarea "vara". Variabila cookie va fi disponibilă timp de o oră (3600 secunde) de la crearea sa. Dacă preferaţi, puteţi specifica momentul expirării folosind funcţia mktime(). Această funcţie are următoarea formă:

mktime (ore, minute, secunde, luna, zi, an)

De exemplu următoarea inscrucţiune creează o variabilă cookie care expiră la o secundă după miezul nopţii primei zile a anului 2008:

setcookie("anotimp", "vara", mktime(0,0,1,1,1,2008));

Atenţie!!!
Valorile variabilelor cookie sunt trimise de către browser ca parte a antetelor HTTP. Ca atare, valorile variabilelor cookie trebuie să fie stabilite anterior expedierii oricăror altor valori către browser. Trimiterea chiar şi a unui singur spaţiu vă poate împiedica să configuraţi valoarea unei variabile cookie. Pentru a evita problemele, asiguraţi-vă că un script PHP care stabileşte o valoare a unei variabile cookie este plasat la începutul fişierului, înainte de a trimite alte taguri html sau alte caractere către browser. De asemenea, stabiliţi valoarea variabilei cookie înainte de a executa o instrucţiunie echo sau altă instrucţiune PHP care trimite browserului date de ieşire. Aceste reguli se aplică la fel şi la crearea sesiunilor despre care am discutat în articolele de pe acest site.

Ştergerea unei variabile cookie

Deoarece o variabilă cookie are o dată de expirare, aceasta va fi ştearsă automat la un oarecare interval de timp după crearea sa. Totuşi, puteţi şterge o variabilă cookie imediat. Pentru aceasta, fixaţi momentul expirării variabilei cookie la un moment de timp din trecut. Exemplu:

setcookie("anotimp", "", time()-3600);

Această instrucţiune stabileşte timpul de expirare cu o oră (3600 de secunde) în urmă. Remarcaţi că valoarea variabilei cookie este exprimată sub forma unui şir vid; din moment ce variabila cookie nu va mai fi disponibilă, valoarea sa nu mai are importanţă.

Stocarea mai multor valori într-o variabilă cookie

Deoarece un site web poate stoca numai 20 de variabile cookie în sistemul unui utilizator, capacitatea de a stoca mai multe valori într-o singură variabilă cookie este utilă. Pentru aceasta, inseraţi valorile într-un tablou şi folosiţi funcţia serialize() pentru a "împacheta" elementele tabloului într-un şir; ulterior, puteţi recupera valoarea tabloului folosind funcţia unserialize(). Mai jos aveţi un exemplu:

Cod:

Cod: Selectaţi tot

 <?php 
 // se creeaza un tablou 
 for ($i = 0; $i < 30; $i++)   { 
    $tablou[$i] = $i; 
 } 
 // se impacheteaza intregul tablou intr-un sir 
 $s = serialize($tablou); 
 // se creeaza o variabila cookie 
 setcookie("cookies", $s); 
 if (isset($cookies)) { 
    // se despacheteaza valoarea variabilei cookie 
    $rezultat = unserialize(stripslashes($cookies)); 
    // afiseaza elementele tabloului din variabila cookie 
    foreach ($rezultat as $i => $cookie) { 
       echo "<br>$i => $cookie"; 
    } 
 } 
 ?>
Acest procedeu reuşeşte să ocolească limita celor 20 de variabile cookie dar nu poate depăşi limita celor 4 KB de date stocate într-o variabilă cookie pentru fiecare site web în parte.

Specificarea accesului la o variabilă cookie

Funcţia setcookie() poate prelua maximum şase argumente, inclusiv trei argumente despre care nu am discutat încă. Iată formatul complet al funcţiei setcookie():

setcookie(nume, valoare, expirare, cale, domeniu, sigur)

În afară de argumentele nume, valoare, expirare pe care le-am descris în acest articol, mai este şi argumentul cale care vă permite să specificaţi calea URL asociată variabilei cookie. În mod prestabilit, variabila cookie este disponibilă pentru scripturile din directorul care conţine scriptul în care a fost configurată variabila respectivă, precum şi pentru scripturile din sub-directoarele aferente directorului respectiv. În particular, scripturilor din directoarele părinte ale directorului care conţine scriptul nu li se permite accesul prestabilit la variabila cookie. Pentru a pune variabila cookie la dispoziţia scripturilor dintr-un anumit director şi din sub-directoarele sale, specificaţi o valoare a argumentului cale. De exemplu, pentru a pune variabila cookie la dispoziţia întregului arbore de directoare, specificaţi "/" ca valoare a argumentului cale; pentru a face variabila cookie disponibilă în directorul /test şi în sub-directoarele sale, specificaţi "/test/" ca valoare a argumentului cale. O complicaţie în utilizarea argumentului cale o constituie modalitatea de identificare a numelor directoarelor. Specificând "/test/" ca valoare a argumentului cale, variabila cookie va deveni disponibilă în /test1, /test2 şi în toate directoarele cu nume similare, pe lângă directorul /test şi sub-directoarele sale.
Dacă nu este specificat nici un argument domeniu, o variabilă cookie este disponibilă numai pentru scripturile rezidente pe serverul web care a creat variabila respectivă. Argumentul domeniu vă permite să specificaţi numele de domeniu asociat unei variabile cookie. În consecinţă, variabila cookie va fi disponibilă numai pentru paginile web din cadrul domeniului specificat.
De exemplu, să presupunem că un script din serverul web http://www.subdomeniu.domeniu.com creează o variabilă cookie. În mod prestabilit, variabila cookie este disponibilă numai pentru gazda respectivă. Cu toate acestea, puteţi face variabila cookie disponibilă pe întreg domeniu subdomeniu.domeniu.com, specificând "subdomeniu.domeniu.com" ca valoare a argumentului domeniu. Specificaţia Netscape pentru variabile cookie impune ca argumentul domeniu să conţină minimum două caractere punct. Ca atare, nu trebuie să specificaţi un şir de tipul "domeniu.com" ca valoare a argumentului domeniu.
Argumentul sigur este o valoare întreagă, care specifică dacă o variabilă cookie trebuie trimisă prin intermediul unei conexiuni sigure (HTTPS). Specificaţi valoarea 1 pentru a împiedica transmiterea variabilei cookie în cazul în care conexiunea nu este sigură; pentru a permite transmiterea variabilei cookie prin conexiuni HTTP obişnuite, specificaţi valoarea 0.
Deoarece browserele stochează variabilele cookie în unitatea de hdd locală, utilizatorii unui sistem pot obţine accesul la fişierele cookie şi pot citi sau chiar modifica informaţiile conţinute în fişierele respective. O modalitate de a preveni situaţia prezentată constă în criptarea datelor stocate în variabilele cookie. Pentru aceasta, puteţi folosi funcţiile Mcrypt din PHP. Funcţiile în cauză sunt incluse în biblioteca libmcrypt, care nu face parte din versiunea instalată în mod prestabilit a limbajului PHP.
Deşi argumentele expirare şi cale ale funcţiei setcookie() sunt opţionale, unele versiuni ale principalelor browsere prezintă erori care le determină să refuze variabilele cookie dacă aceste argumente nu sunt specificate. Ca atare, în general este recomandat să specificaţi aceste argumente.

Menţiune:
Înainte de a trimite date HTML unui browser, un server web trimite, în general, unul sau mai multe antete HTTP; aceste antete sunt cunoscute sub numele de antete de răspuns al serverului. Similar, înainte de a trimite informaţii unui server web, un browser web trimite, în general, unul sau mai multe antete HTTP; aceste antete sunt cunoscute sub numele de antete de cerere. Antetele de răspuns ale serverului frecvent folosite descriu configuraţia serverului şi furnizează informaţii referitoare la adresa URL solicitată de client. Antetele de cerere utilizate de obicei descriu configuraţia clientului şi formatele de date acceptabile de către client. În afară de antetele de răspuns ale serverului şi de antetele de cerere, protocolul HTTP foloseşte antete generale şi antete de entitate. Antetele generale sunt folosite atât de către clienţi, cât şi de către servere, pentru a specifica informaţii precum data curentă şi opţiunile de conexiune. Antetele de entitate descriu formatul datelor schimbate de un client şi un server.
N-am cerut la nimeni niciodata,
Chiar de-a fost sa rabd, in viata mea.
Am dat totul fara nici o plata,
Nevoind nimic sa mi se dea.

@Virgil Carianopol
Vezi-ti de treaba si retine:
"E treaba ta sa spui ce vrei si sa nu conteze pentru nimeni".

@Kazi Ploae

Înapoi la “Tutoriale PHP”

Cine este conectat

Utilizatori răsfoind acest forum: Niciun utilizator înregistrat și 1 vizitator