Cookie

postat acum 2 ani de Stefanescu Mihai in categorie PHP

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>

 

Sunt un tanar programator din Bucuresti ce lucreaza in PHP/Mysql (MySqli/PDO), Laravel, CodeIgniter, MySQL, PostgreSQL, Wordpress, HTML5/CSS3, Sass, Photoshop si multe altele.
Google+ Community Facebook Group
Acest articol a fost mutat de pe vechea platforma.
Pentru orice eroare aparuta la mutare va rog sa ma contactati!