Cookie e Sessioni

Informazioni sul Tutorial (autore, data di revisione, ...)

Ultima data di revisione:

Autore Tutorial King Kaito Kid, membro del Team Invisible

Tutorial di PHP

Cosa sono i cookie, come si settano, modificano ed eliminano. Inoltre vengono affrontate le sessioni, come funzionano, creano, modificano e distruggono.

Leggi il Tutorial
Introduzione

Oggi dominano il mondo del web, ogni sito che aprire probabilmente dirà: "Questo sito utilizza i cookie per migliorare l'esperienza".

I Cookie, in generale, sono dei file che vi identificano in modo univoco ed è un file di piccole dimensioni che viene inviato al server quando aprite un sito web che ne fa uso.

È un file che viene salvato sulla vostra macchina, quindi se cancellate i cookie cancellate tale informazione (almeno in teoria).


Cookie

Ricordo che il PHP è un linguaggio lato server quindi può accedere a questa informazione riguardo il cookie e ne può creare di nuovi.


Per impostare il cookie dovete scrivere il codice PHP prima di ogni altro codice

, stessa cosa se volete modificare un Cookie.


Con prima di ogni altra cosa intendo prima del tag <html>.


Se volete modificare un Cookie dovete ricrearlo nuovamente (non è necessario prima eliminarlo e ricrearlo ma solamente riscriverlo).

Per creare (o riscrivere) un Cookie questo deve essere in assoluto il primo codice PHP:

Mostra / Nascondi il codice

setcookie(name, value, expire, path);

Ci sono anche altri parametri ma sono più avanzati e potete approfondirli sul manuale PHP.

SOLO name è obbligatorio, tutti gli altri sono opzionali se volete impostare un cookie che vale per il vostro intero sito web (non legato ad una directory) il path deve essere inserito come "/" altrimenti mettete il path specifico alla directory.

Esiste anche setrawcookie() che ha gli stessi input di setcookie() ma non effettua alcuna URLEncode e URLDecode (cosa che setcookie() fa).


Per leggere un Cookie si usa la super variabile dedicata $_COOKIE.

Il PHP mette a disposizione una funzione chiamata isset() e ha come input quello che voi desiderate, ad esempio se volessimo verificare se esiste un Cookie chiamato first_name scriveremo isset($_COOKIE["first_name"]) e ci dirà true oppure false (se esiste o meno).


Non posso far vedere come funzionano tecnicament i Cookie ma solo mostrarvi il codice che imposta un cookie ed uno che legge i cookie.


In questo esempio vogliamo memorizzare la referenza che ha aperto il nostro sito nel cookie chiamato "open_by" e dovrà valere per l'intero sito e che valga per soli 5 minuti ovvero vogliamo che dopo 5 minuti venga distrutto automaticamente:
Mostra / Nascondi il codice

<?php

setcookie("open_by", $_SERVER["HTTP_REFERER"], time() + 300, "/");

?>

È stata usata una funzione del PHP chiamata time() che vi restituisce i secondi che son passati dal 1 Gennaio 1970 00:00:00 fino ad oggi, quindi time() + 300 stiamo dicendo prendi il tempo di oggi e aggiungi altri 300 secondi (che sono 5 minuti).


In qualsiasi pagina per accedere al Cookie appena salvato ecco cosa dobbiamo fare (non metto i tag PHP perché questo potete metterlo in qualsiasi parte del vostro codice PHP) e stampiamolo a video:
Mostra / Nascondi il codice

echo $_COOKIE["open_by"];

Esiste anche una versione più completa ovvero possiamo prima verificare se esiste tale cookie e se esiste stamparlo a video altrimenti dire che non esiste:
Mostra / Nascondi il codice

if (isset($_COOKIE["open_by"]))

{

echo $_COOKIE["open_by"];

}


else

{

echo "Non esiste un cookie chiamato open_by";
}


Voglio distruggere un cookie, come faccio?



Domanda lecita e spesso è necessario distruggere un cookie (ad esempio è molto utilizzato quando fate "Ricorda questo accesso", distrutto il cookie e relativi dati perdete l'accesso), essenzialmente non potete eliminare in modo diretto il cookie ma potete anticipare la scadenza e mettere un valore del passato così ci pensa il browser a fare il resto.


Sessione

Le sessioi in PHP sono simili ai Cookie solo che sono memorizzate sul server e non sulla macchina utente e valgono per tutta l'applicazione o sito web e come con i Cookie.


A differnza dei Cookie le sessioni devono essere sempre dichiarate prima di ogni altra cosa (ovvero prima del tag <html>):
Mostra / Nascondi il codice

>?php

session_start();
?<

Questa riga di codice è d'obbligo se volete creare, leggere, modificare o eliminare
Tutte le sessioni (valide solo per il sito/app che l'utente sta vedendo) sono memorizzate nella super variabile $_SESSION.


Per settare e modificare una sessione si scrive semplicemente: $_SESSION["NameSession"] = value;, non serve che dica come deve essere letta una sessione ?

Se volete eliminare tutte le sessioni dovete usare questa coppia di funzioni:
Mostra / Nascondi il codice

// Just empy all $_SESSION vars
session_unset();

// Destroy them
session_destroy();

È essenziale che facciate session_unset() se volete rimuovere tutte le sessioni attive, altrimenti c'è il rischio che qualche sessione possa essere ancora attiva.
Altri Tutorial di questo linguaggio

Qui vengono mostrati tutti i Tutorial riguardo PHP, la pagia viene aggiornata.

Se vuoi cambiare linguaggio puoi farlo da questa pagina: Elenco dei Tutorial

FAQ | Curiosità
Non sono state poste domande su questo Tutorial al momento.
Se hai delle domande da fare usa la sezione dedicata e se la domanda viene posta tante volte o è importante apparirà in questa sezione dedicata alle domande.
Hai una domanda? | Contattaci

Scrivici la domanda e come vuoi essere ricontattato

Puoi comunicare con noi in modo diretto ma RICORDA che se vuoi essere contattato devi indicarci come farlo perché tutte le domande che ci arrivano sono tutte anonime.