Cookie

Stefanescu Mihai 2 years ago 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>

 

Programator de ~8 ani, am lucrat la proiecte din mai multe industrstrii, de la eCommerce la telecomunicatii la automatizari. In acest timp am folosi diferite tehnologii, de la PHP, MySQL, PostgreSql, RabbitMq, Redis, Memcached si altele.


Get in touch
Pentru nelamuriri, dubii, comentarii si chestii de pe suflet ne putem auzi pe Discord, Reddit sau poti deschide o discutie noua pe forum

Club-ul este dedicat membrilor si ofera access la mai multe zone ale website-ului.
Login Register

🔖 Bookmarks
âœĻ Pentru a sustine aceasta comunitate am sa te rog sa te autentifici sau sa te inregistrezi!

🌊ïļ Discord
Back to top
Folosim cookie-uri pentru a oferi functionalitatile critice ale aplicatiei Invata-Programare. Folosim cookie-uri si pentru a analiza traficul, pentru care e nevoie de consimtamantul dvs. explicit.