Cookie

postat acum 4 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!

Comentariu postate de g la data de 13.05.2019
My family all the time say that I am killing my time here at net, but I know I am getting know-how all the time by reading thes nice articles or reviews.
Comentariu postate de how to download minecraft free la data de 16.05.2019
It's perfect time to make some plans for the future and it's time to be happy. I've read this post and if I could I want to suggest you some interesting things or suggestions. Perhaps you can write next articles referring to this article. I wish to read even more things about it!
Comentariu postate de hermes belts la data de 17.05.2019
Thank you so much for giving everyone such a spectacular chance to check tips from this site. It can be so enjoyable and as well , packed with fun for me and my office mates to search your site at the very least thrice in one week to find out the fresh tips you have got. And definitely, I am just usually astounded with the extraordinary suggestions you serve. Selected two facts in this article are essentially the most efficient we have had.