Cookie-urile și sesiunile (de acces pe un site) sunt mecanisme pe care le putem folosi pentru a stoca și utiliza informații de pe orice pagină de pe site-ul nostru. Aceste abordări ne permit să facem acest lucru fără a fi necesar să transmitem informații între pagini folosind formulare sau linkuri speciale, așa cum avem până acum. Cookie-urile reușesc acest lucru prin stocarea fișierelor foarte mici pe computerul utilizatorului. Acestea sunt de obicei folosite pentru a păstra informații care identifică utilizatorul, indiferent dacă este sau nu conectat, sau alte informații de care utilizatorul are nevoie pentru o experiență completă cu site-ul. Cookie-urile pot fi setate să expire după o perioadă fixă de timp, sau „pentru totdeauna”, prin setarea unei date de expirare mult după ce computerul sau utilizatorul nu mai interacționează.
Sesiunile permit aceeași stocare a informațiilor, dar o realizează prin stocarea informațiilor pe server (în loc de computer) pentru o perioadă fixă de timp (de obicei până la 15 minute, cu excepția cazului în care utilizatorul rămâne activ). Aceasta înseamnă că sesiunile vor funcționa în continuare chiar și atunci când setările de securitate ale utilizatorului blochează cookie-urile. Utilizarea cookie-urilor poate fi dezactivată în mai multe moduri cum ar fi utilizarea software-ului de securitate, setările browserului și aplicațiile de blocare de anunțuri. Din acest motiv, poate fi util să folosiți ambele pe site-ul dvs., permițând o utilizare cât mai funcțională posibil chiar și atunci când cookie-urile sunt refuzate, dar valorificând totuși persistența lor mai lungă atunci când sunt disponibile.
Pentru a crea un cookie, trebuie să apelăm funcția setcookie() și să îi transmitem câteva variabile. Cel puțin, trebuie să dăm cookie-ului nostru un nume și o valoare pentru a-l stoca. Numele este modul în care ne vom referi la el, iar valoarea este ceea ce vrem să fie stocată, la fel ca orice altă variabilă pe care am crea-o. În plus, putem oferi lui setcookie() un timp de expirare, o cale, un domeniu și un semnalizator securizat.
Timpul, dacă este setat, trebuie să fie numărul de secunde de la creare pentru care cookie-ul este considerat valabil. Putem realiza acest lucru prin trecerea funcției time(), care este implicit la ora curentă, și adăugându-i secunde. De exemplu, sacă punem time()+60 înseamnă timpul actual plus 60 de secunde. Dacă vrem să punem 15 minute, putem folosi matematica în loc să facem transformarea, trecând time()+60*15. 60 de secunde, de 15 ori, înseamnă 15 minute. O zi întreagă (60 de secunde, 60 de ori = 1 oră. 24 de ore într-o zi) ar fi time()+60*60*24.
În mod implicit, cookie-ul nostru va fi considerat valid pe toate paginile din folderul în care ne aflăm atunci când îl creăm. Putem specifica un alt folder (și subfolderele acestuia) plasându-l în opțiunea cale. Același lucru este valabil și pentru domeniul, unde putem specifica faptul că un cookie este bun numai în anumite părți ale site-ului nostru, cum ar fi un subdomeniu de administrator.
În cele din urmă, putem trece adevărat sau fals (fals este implicit) pentru a fi sigur. Când este setat la adevărat, cookie-ul poate fi utilizat numai pe o conexiune https la site-ul nostru.
Putem transmite valorile dorite în următoarea ordine:
setcookie(name, value, expire, path, domain, secure);
Un exemplu simplu de setare user=12345 pentru o zi în secțiunea noastră de administrare a site-ului nostru ar putea arăta astfel:
<?php setcookie("user","12345",time()+60*60*24,,admin.situlnostru.com); ?>
Din orice pagină din porțiunea admin.situlnostru.com a domeniului nostru, acum putem folosi $_ COOKIE[„user”] pentru a obține valoarea 12345. Dacă dorim să stocăm alte valori, putem transmite o matrice cookie-ului nostru, sau crea alte cookie-uri pentru alte valori. Pentru a schimba o valoare a cookie-ului nostru, pur și simplu folosim setcookie și dăm același nume cu noua noastră valoare:
<?php setcookie("user","23456"); ?>
În cele din urmă, dacă vrem să scăpăm de modul cookie devreme (adică utilizatorul se deconectează), atunci pur și simplu setăm cookie-ul la o perioadă din trecut, iar computerul utilizatorului va scăpa imediat de acesta pe măsură ce expiră:
<?php setcookie("users","",time()-60*60); ?>
În acest exemplu, ne-am setat cookie-ul cu o oră mai devreme.
O sesiune funcționează în același mod și poate fi creată apelând session_start(); în partea de sus a paginii noastre. Apoi putem seta, actualiza și șterge variabilele din sesiune ca orice altă matrice, folosind matricea rezervată $_SESSION[]. Pentru a adăuga din nou utilizatorul nostru, am tasta:
<?php session_start(); $_SESSION["user"]="12345"; ?> <html> restul paginii aici...
Este important să rețineți că session_start() trebuie să fie înainte de deschiderea oricărui conținut, deci deasupra etichetei <html>. Odată pe o altă pagină, vom apela din nou session_start() în partea de sus pentru a declara că valorile sesiunii pot fi utilizate pe pagina respectivă. După ce am făcut asta, putem continua să folosim valorile $_SESSION[] oriunde pe pagina respectivă. Dacă utilizatorul este inactiv (nu părăsește pagina sau nu dă clic pe niciun link sau nu declanșează în alt mod o acțiune către server) timp de 15 minute (valoarea implicită), sesiunea este distrusă automat.
Putem elimina manual elemente din sesiunea noastră apelând unset(), de exemplu:
<?php session_start(); unset($_SESSION['User']; ?>
Sau putem trece direct la încheierea întregii sesiuni utilizând funcția session_destroy:
<?php session_destroy(); ?>
Aceasta va elimina întreaga matrice $_SESSION[] din memorie. Creați sau modificați o altă pagină PHP din colecția dvs. (în același folder și site ca exemplul curent). În această a doua pagină, veți putea să apelați aceleași valori din modulul cookie sau din sesiune (atâta timp cât includeți session_start() și în acest fișier) fără a trece nicio informație direct între pagini.
Sursa: Michael Mendez, The Missing Link – An Introduction to Web Development and Programming (CC BY-NC-SA 3.0 License), Published by Open SUNY Textbooks, Milne Library (IITG PI), State University of New York at Geneseo. Traducere de Nicolae Sfetcu
Descoperă mai multe la MultiMedia
Abonează-te ca să primești ultimele articole prin email.




Lasă un răspuns