Sesiune PHP și cookie-uri PHP cu exemplu

⚡ Rezumat inteligent

Cookie-urile și sesiunile în PHP păstrează ambele starea în protocolul HTTP fără stare, dar stochează datele în mod diferit. Această demonstrație explică modul în care cookie-urile salvează fișiere mici pe client, modul în care sesiunile păstrează datele pe server și cum să creați, să citiți și să distrugeți fiecare cu cod funcțional.

  • 🍪 Ce sunt cookie-urile: Un cookie este un fișier mic, de până la 4KB, pe care serverul îl stochează pe client și care returnează date la fiecare solicitare ulterioară.
  • 🗄️ Ce sunt sesiunile: O sesiune stochează date pe server sub un ID unic, păstrat în matricea $_SESSION și la care se face referire printr-un cookie de sesiune.
  • 🆚 Diferența cheie: Cookie-urile se află pe client și sunt potrivite pentru date mici, nesensibile; sesiunile se află pe server și conțin date mai mari sau private.
  • 🛠️ Crearea cookie-urilor: setcookie() setează un nume, o valoare și indicatorii opționali de expirare, cale, domeniu, securitate și httponly înainte de orice ieșire HTML.
  • 📝 Crearea sesiunilor: session_start() începe o sesiune, după care citești și scrii valori prin intermediul tabloului superglobal $_SESSION.
  • 🗑️ A curăța: Expiră un cookie prin setarea unei ore de trecere; încheie o sesiune cu session_destroy() sau șterge o valoare cu unset().
  • 🤖 Asistență AI: Instrumentele de inteligență artificială pot implementa o gestionare securizată a sesiunilor și pot semnala punctele slabe ale cookie-urilor sau ale sesiunilor în codul PHP existent.

Cookie-uri și sesiuni PHP

Ce este Cookie?

Un cookie este un fișier mic, cu o dimensiune maximă de 4KB, pe care serverul web îl stochează pe computerul clientului.

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 doar din domeniul din 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, a cookie-urilor terțe sau a ambelor.

Dacă acesta este cazul, atunci PHP răspunde prin transmiterea token-ului cookie în 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ă stare; cookie-urile ne permit să track 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 Internet temporare.
  • Personalizarea experienței utilizatorului – aceasta se realizează permițând utilizatorilor să își selecteze preferințele. Solicitările de pagină care urmează sunt personalizate pe baza preferințelor setate în cookie-uri.
  • Tracking paginile vizitate de un utilizator

Crearea cookie-urilor

Să analizăm acum sintaxa de bază utilizată pentru a crea un cookie.

<?php

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

?>

AICI,

  • „setcookie” este Funcția PHP folosit pentru a crea cookie-ul.
  • „cookie_name” este numele cookie-ului pe care serverul îl va folosi la preluarea valorii sale din variabila array $_COOKIE. Este obligatoriu.
  • „cookie_value” este valoarea cookie-ului și este obligatorie.
  • „[expiry_time]” este opțional; poate fi folosit pentru a seta timpul de expirare pentru cookie, cum ar fi 1 oră. Timpul este setat folosind funcția 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.
  • „[domeniu]” este opțional; poate fi folosit pentru a defini ierarhia de acces la cookie-uri, de exemplu www.cookiedomain.com înseamnă întregul domeniu în timp ce www.sub.cookiedomain.com limitează accesul la cookie-uri www.sub.cookiedomain.com și subdomeniile sale.
  • „[secure]” este opțional; valoarea implicită este false. Este folosit pentru a determina dacă cookie-ul este trimis prin HTTPS dacă este setat la true sau prin HTTP dacă este setat la false.
  • „[httponly]” este opțional. Dacă este setat la true, atunci limbajele de scripting de pe partea clientului, cum ar fi JavaScenariu nu poate accesa cookie-ul.

Notă: Funcția PHP setcookie trebuie executată înaintea etichetei de deschidere HTML.

Să luăm acum în considerare 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ă șaizeci de 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ă superglobală încorporată în PHP. Aceasta conține numele și valorile tuturor cookie-urilor setate.

Numărul de cookie-uri și dimensiunea acestora sunt limitate de browser, de obicei în jur de 50 de cookie-uri per domeniu și 4KB per cookie.

Testarea aplicației noastre. Să presupunem că ați salvat fișierele PHP într-un folder phptuts.

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

Recuperarea valorii Cookie

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

  • Pasul 2 – navigați la URL http://localhost/phptuts/cookies.php

Recuperarea valorii Cookie

  • Pasul 3 – reveniți la prima filă, apoi faceți clic pe butonul de actualizare

Recuperarea valorii Cookie

Așteptați un minut, apoi faceți clic din nou pe butonul de actualizare. Ce rezultate ați obținut?

Ș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 fișier nou numit cookie_destroy.php cu următorul cod
<?php

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

?>
  • Repetați pașii 1-3 din secțiunea de mai sus privind recuperarea valorilor cookie-urilor.
  • Deschideți URL http://localhost/phptuts/cookie_destroy.php
  • Treceți la URL http://localhost/phptuts/cookies_read.phpCe rezultate afișează?

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 clientului nu acceptă cookie-uri, ID-ul unic al sesiunii 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 utilizatorului, într-un mod mai sigur pe server, unde utilizatorii rău intenționați nu le pot modifica.
  • Doriți să transmiteți valori de la o pagină la alta.
  • Doriți o alternativă la cookie-urile din browserele care nu acceptă cookie-uri.
  • Doriți să stocați variabile globale într-un mod eficient și mai sigur în comparație cu transmiterea lor în URL.
  • Ești dezvoltatping o aplicație precum un magazinping cart 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ă apelezi funcția PHP session_start și apoi să stochezi valorile în variabila array $_SESSION.

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

Codul de mai jos arată cum se creează și se preiau valori din sesiuni.

<?php

session_start(); // start the session

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 utilizată pentru a distruge întreaga sesiune PHP.

Dacă vrei să distrugi un singur element de sesiune, folosești 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ă doar variabilele individuale de sesiune. Celelalte date rămân intacte.

Întrebări frecvente

Cookie-urile stochează date într-un fișier mic în browserul utilizatorului și sunt transmise odată cu fiecare solicitare. Sesiunile stochează date pe server și trimit doar un cookie de identificare a sesiunii. Sesiunile sunt mai sigure pentru datele sensibile sau mai mari.

În mod implicit, PHP salvează datele de sesiune ca fișiere în calea setată de session.save_path în php.ini, adesea directorul temporar al sistemului. Site-urile cu trafic intens trec adesea la o bază de date, Redis sau un handler Memcached.

Setați steagul HttpOnly astfel încât JavaScriptul nu poate citi cookie-ul, semnalizatorul Secure, deci se transmite doar prin HTTPS, și un atribut SameSite pentru a limita trimiterea între site-uri. Pentru sesiuni, regenerați ID-ul după conectare.

Da. Inteligența artificială poate genera un flux de conectare care regenerează ID-ul sesiunii, setează semnalizări cookie securizate, stochează un minim de date pe partea serverului și impune timeout-uri. RevVizualizați rezultatul în raport cu cerințele dumneavoastră de securitate.

Da. Inteligența artificială poate scana pentru a identifica semnalizatoarele HttpOnly sau Secure lipsă, riscurile de blocare a sesiunii, stocarea datelor sensibile în cookie-uri și absența regenerării ID-ului după autentificare, apoi poate sugera codul corectat.

Rezumați această postare cu: