Sesiune PHP și cookie-uri PHP cu exemplu

Ce este Cookie?

Un cookie este un fișier mic cu dimensiunea maximă de 4KB pe care serverul web îl stochează pe computerul client.

Odată ce un cookie a fost setat, toate solicitările de pagină care urmează returnează numele și valoarea cookie-ului.

Un cookie poate fi citit numai de pe domeniul de pe care a fost emis. De exemplu, un cookie setat folosind domeniul www.guru99.com nu poate fi citit din domeniu career.guru99.com.

Majoritatea site-urilor de pe internet afișează elemente din alte domenii, cum ar fi publicitate. Domeniile care deservesc aceste elemente își pot seta și propriile cookie-uri. Acestea sunt cunoscute ca cookie-uri terță parte.

Un cookie creat de un utilizator poate fi vizibil numai pentru acesta. Alți utilizatori nu-i pot vedea valoarea.

Majoritatea browserelor web au opțiuni pentru dezactivarea cookie-urilor, cookie-urilor terțe sau ambele.

Dacă acesta este cazul, PHP răspunde prin transmiterea simbolului cookie în adresa URL.

Diagrama de mai jos ilustrează modul în care funcționează cookie-urile.

Ce este Cookie

Aici,

1) Un utilizator solicită o pagină care stochează cookie-uri

2) Serverul setează cookie-ul pe computerul utilizatorului

3) Alte solicitări de pagină din partea utilizatorului vor returna numele și valoarea cookie-ului

De ce și când să folosiți cookie-urile?

  • Http este un protocol fără stat; cookie-urile ne permit să urmărim starea aplicației folosind fișiere mici stocate pe computerul utilizatorului. Calea în care sunt stocate cookie-urile depinde de browser. Internet Explorer le stochează de obicei în folderul Fișiere temporale de Internet.
  • Personalizarea experienței utilizatorului – aceasta se realizează permițându-le utilizatorilor să-și selecteze preferințele. Pagina solicitată care urmează sunt personalizate în funcție de preferințele setate în cookie-uri.
  • Urmărirea paginilor vizitate de un utilizator

Crearea cookie-urilor

Să ne uităm acum la sintaxa de bază folosită pentru a crea un cookie.

<?php

setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]);

?>

AICI,

  • Php „setcookie” este Funcția PHP folosit pentru a crea cookie-ul.
  • „cookie_name” este numele cookie-ului pe care serverul îl va folosi atunci când își preia valoarea din variabila matrice $_COOKIE. Este obligatoriu.
  • „cookie_value” este valoarea cookie-ului și este obligatoriu
  • „[expiry_time]” este opțional; poate fi folosit pentru a seta timpul de expirare a cookie-ului, cum ar fi 1 oră. Ora este setată folosind funcțiile PHP time() plus sau minus un număr de secunde mai mare decât 0, adică time() + 3600 pentru 1 oră.
  • „[cookie_path]” este opțional; poate fi folosit pentru a seta calea cookie-urilor pe server. Bara oblică „/” înseamnă că cookie-ul va fi disponibil pe întregul domeniu. Subdirectoarele limitează accesul cookie-urilor la subdomeniu.
  • „[domeniul]” este opțional, poate fi folosit pentru a defini ierarhia de acces la cookie-uri, adică www.cookiedomain.com înseamnă întreg domeniu în timp ce www.sub.cookiedomain.com limitează accesul la cookie-uri www.sub.cookiedomain.com și subdomeniile sale. Rețineți că este posibil să aveți un subdomeniu al unui subdomeniu atâta timp cât numărul total de caractere nu depășește 253 de caractere.
  • „[secure]” este opțional, implicit este false. Este folosit pentru a determina dacă cookie-ul este trimis prin https dacă este setat la adevărat sau http dacă este setat la fals.
  • „[Httponly]” este opțional. Dacă este setat la true, atunci numai limbaje de scripting pe partea clientului, de ex JavaScenariu nu le pot accesa.

Notă: funcția php set cookie trebuie să fie executată înainte de eticheta de deschidere HTML.

Să ne uităm acum la un exemplu care utilizează cookie-uri.

Vom crea un program de bază care ne permite să stocăm numele de utilizator într-un cookie care expiră după zece secunde.

Codul de mai jos arată implementarea exemplului de mai sus „cookies.php”.

<?php
     setcookie("user_name", "Guru99", time()+ 60,'/'); // expires after 60 seconds
     echo 'the cookie has been set for 60 seconds';
?>

ieșire:

the cookie has been set for 60 seconds

Recuperarea valorii Cookie

Creați un alt fișier numit „cookies_read.php” cu următorul cod.

<?php
     print_r($_COOKIE);    //output the contents of the cookie array variable 
?>

ieșire:

Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Guru99 )

Notă: $_COOKIE este o variabilă super globală construită în PHP.

Conține numele și valorile tuturor cookie-urilor setate.

Numărul de valori pe care

Matricea $_COOKIE poate conține depinde de dimensiunea memoriei setată în php.ini.

Valoarea implicită este 1 GB.

Testarea aplicației noastre.

Să presupunem că ați salvat fișierele PHP în folderul phptus.

  • Pasul 1 – deschideți browserul web și introduceți adresa URL http://localhost/phptuts/cookies_read.php

Recuperarea valorii Cookie

Notă: a fost afișată doar o matrice goală

  • Pasul 2 – Browser la adresa URL http://localhost/phptuts/cookies.php

Recuperarea valorii Cookie

  • Pasul 3 – Reveniți la prima filă, apoi faceți clic pe butonul de reîmprospătare

Recuperarea valorii Cookie

Așteptați un minut, apoi faceți din nou clic pe butonul de reîmprospătare. Ce rezultate ai obtinut?

Ștergeți modulele cookie

  • Dacă doriți să distrugeți un cookie înainte de expirarea acestuia, atunci setați timpul de expirare la un timp care a trecut deja.
  • Creați un nou fișier numit cookie_destroy.php cu următorul cod
<?php

 setcookie("user_name", "Guru99", time() - 360,'/');

?>
  • Repetați pașii de la 1 la 3 din secțiunea de mai sus privind preluarea valorilor cookie-urilor.
  • Deschideți adresa URL http://localhost/phptuts/cookie_destroy.php
  • Comutați la adresa URL http://localhost/phptuts/cookies_read.php ce rezultate afiseaza?

Ce este o sesiune?

  • O sesiune este o variabilă globală stocată pe server.
  • Fiecărei sesiuni i se atribuie un ID unic care este folosit pentru a prelua valorile stocate.
  • Ori de câte ori este creată o sesiune, un cookie care conține ID-ul unic al sesiunii este stocat pe computerul utilizatorului și returnat cu fiecare solicitare către server. Dacă browserul client nu acceptă cookie-uri, ID-ul unic de sesiune php este afișat în URL
  • Sesiunile au capacitatea de a stoca date relativ mari în comparație cu cookie-urile.
  • Valorile sesiunii sunt șterse automat când browserul este închis. Dacă doriți să stocați valorile în mod permanent, atunci ar trebui să le stocați în baza de date.
  • La fel ca variabila matrice $_COOKIE, variabilele de sesiune sunt stocate în variabila matrice $_SESSION. La fel ca cookie-urile, sesiunea trebuie începută înaintea oricăror etichete HTML.

De ce și când să folosiți Sessions?

  • Doriți să stocați informații importante, cum ar fi ID-ul de utilizator, mai sigur pe server, unde utilizatorii rău intenționați nu se pot tempera cu ele.
  • Doriți să transmiteți valori de la o pagină la alta.
  • Doriți alternativa la cookie-uri pe browsere care nu acceptă cookie-uri.
  • Doriți să stocați variabile globale într-un mod eficient și mai sigur în comparație cu trecerea lor în URL
  • Dezvoltați o aplicație, cum ar fi un coș de cumpărături, care trebuie să stocheze temporar informații cu o capacitate mai mare de 4KB.

Crearea unei sesiuni

Pentru a crea o sesiune, trebuie mai întâi să apelați funcția PHP session_start și apoi să vă stocați valorile în variabila matrice $_SESSION.

Să presupunem că vrem să știm de câte ori a fost încărcată o pagină, putem folosi o sesiune pentru a face asta.

Codul de mai jos arată cum să creați și să preluați valori din sesiuni

<?php

session_start(); //start the PHP_session function 

if(isset($_SESSION['page_count']))
{
     $_SESSION['page_count'] += 1;
}
else
{
     $_SESSION['page_count'] = 1;
}
 echo 'You are visitor number ' . $_SESSION['page_count'];

?>

ieșire:

You are visitor number 1

Distrugerea variabilelor de sesiune

Funcția session_destroy() este folosită pentru a distruge toate variabilele sesiunii PHP.

Dacă doriți să distrugeți doar un singur element de sesiune, utilizați funcția unset().

Codul de mai jos ilustrează cum să utilizați ambele metode.

<?php

 session_destroy(); //destroy entire session 

?>
<?php

unset($_SESSION['product']); //destroy product session item 

?>

Session_destroy elimină toate datele sesiunii, inclusiv cookie-urile asociate sesiunii.

Unset eliberează numai variabilele individuale ale sesiunii.

Alte date rămân intacte.

Rezumat

  • Cookie-urile sunt fișiere mici salvate pe computerul utilizatorului
  • Cookie-urile pot fi citite numai din domeniul emitent
  • Cookie-urile pot avea un timp de expirare, dacă nu este setat, atunci cookie-ul expiră când browserul este închis
  • Sesiunile sunt ca variabilele globale stocate pe server
  • Fiecare sesiune primește un ID unic de identificare care este utilizat pentru a urmări variabilele pentru un utilizator.
  • Atât cookie-urile, cât și sesiunile trebuie să fie pornite înainte ca orice etichete HTML să fie trimise în browser.