• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Lezione #12 | Registrare gli stati: Cookie & Sessioni

Kaito

Utente Strepitoso
Autore del topic
16 Febbraio 2011
4.511
47
Miglior risposta
0
Come tutti sappiamo, esiste un qualcosa che ci registra come "loggati" nei forum ad esempio, ma cos' è quel qualcosa? Stiamo parlando di COOKIE e SESSIONI.

La differenza sostanziale tra i due è che nei cookie, a differenza delle sessioni, possiamo scegliere la durata di essi, ma registrandosi automaticamente nel browser, concedono la possibilità a chiunque abbia la possibilità di accedervi, di mostrarne il contenuto.
Per le sessioni il discorso è diverso, infatti durano finché si rimane nelle pagine nelle quali è registrato e quando si esce da esse, non chiudendo il browser, continuano a durare per circa 5 minuti. Se si chiude il browser, termineranno automaticamente all' istante.

Dopo aver visto in cosa si differenziano, direi di analizzare subito la parte pratica.

## SESSIONI ##

Creare le sessioni

Per registrare le sessioni, sarà necessario solamente inizializzarle, tramite session_start() e crearle, utilizzando la variabile global $_SESSION.

Attenzione: session_start() va prima di qualsiasi altro codice!

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

In questo modo, registreremo o aggiorneremo la variabile username con il contenuto, ad esempio Kaito. Anche con esse però, c'è un rischio di spoofing, chiamato session spoofing, per evitar ciò bisogna utilizzare l' apposita funzione session_regenerate_id, che genererà una nuova key per la sessione evitando spiacevoli incovenienti. Come session_start(), va messo prima di qualsiasi codice di output.

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!


Leggere le sessioni

La lettura delle sessioni è semplice quanto intuitiva, basterà infatti utilizzare sempre la global var $_SESSION per otterne il contenuto.

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Nel caso in cui non esista, la variabile a cui sarà assegnata rimarrà vuota, e in questo caso è utile controllare la sua esistenza, utilizzando la funzione isset().

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Ovviamente è consigliabile mescolare ciò con un po' di sicurezza.

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!


Cancellare le sessioni

La cancellazione di una sessione è semplicissima, basterà utilizzare la funzione unset(), racchiudendo in essa la global var $_SESSION con il nome della sessione.

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Per distruggere, invece, tutte le sessioni presenti nel sito, bisognerà usare session_destroy().


## COOKIE ##


Creare i cookie

La creazione di un cookie non sarà rapidissima come quella delle sessioni, ma è egualmente semplice e sfrutterà la funzione setcookie(), che accetterà come parametri il nome, il contenuto, la scadenza, la path, il dominio, la sicurezza e l' httponly. Sostanzialmente, solo i primi tre son necessari.

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

In questo caso, il cookie durerà un' ora, in quanto 3600 sono i secondi in essa. Io consiglio vivamente, onde evitare problemi mentali sul calcolare il tempo, l' utilizzo di strtotime().

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!


Leggere i cookie

La lettura dei cookie è analoga a quella delle sessioni, infatti basterà riprendere la global var $_COOKIE, cosa applicabile anche all' isset() per controllare se esiste.

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!


Cancellare i cookie

La cancellazione di un cookie sfrutterà, nuovamente, la funzione setcookie(), impostandone come nome il nome del cookie da cancellare, il valore va bene anche vuoto e come data di scadenza un valore negativo, un' orario già passato.

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!
 
  • Like
Reactions: 1 person
Riferimento: Lezione #12 | Registrare gli stati: Cookie & Sessioni

Come tutti sappiamo, esiste un qualcosa che ci registra come "loggati" nei forum ad esempio, ma cos' è quel qualcosa? Stiamo parlando di COOKIE e SESSIONI.

La differenza sostanziale tra i due è che nei cookie, a differenza delle sessioni, possiamo scegliere la durata di essi, ma registrandosi automaticamente nel browser, concedono la possibilità a chiunque abbia la possibilità di accedervi, di mostrarne il contenuto.
Per le sessioni il discorso è diverso, infatti durano finché si rimane nelle pagine nelle quali è registrato e quando si esce da esse, non chiudendo il browser, continuano a durare per circa 5 minuti. Se si chiude il browser, termineranno automaticamente all' istante.

Dopo aver visto in cosa si differenziano, direi di analizzare subito la parte pratica.

## SESSIONI ##

Creare le sessioni

Per registrare le sessioni, sarà necessario solamente inizializzarle, tramite session_start() e crearle, utilizzando la variabile global $_SESSION.

Attenzione: session_start() va prima di qualsiasi altro codice!

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

In questo modo, registreremo o aggiorneremo la variabile username con il contenuto, ad esempio Kaito. Anche con esse però, c'è un rischio di spoofing, chiamato session spoofing, per evitar ciò bisogna utilizzare l' apposita funzione session_regenerate_id, che genererà una nuova key per la sessione evitando spiacevoli incovenienti. Come session_start(), va messo prima di qualsiasi codice di output.

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!


Leggere le sessioni

La lettura delle sessioni è semplice quanto intuitiva, basterà infatti utilizzare sempre la global var $_SESSION per otterne il contenuto.

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Nel caso in cui non esista, la variabile a cui sarà assegnata rimarrà vuota, e in questo caso è utile controllare la sua esistenza, utilizzando la funzione isset().

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Ovviamente è consigliabile mescolare ciò con un po' di sicurezza.

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!


Cancellare le sessioni

La cancellazione di una sessione è semplicissima, basterà utilizzare la funzione unset(), racchiudendo in essa la global var $_SESSION con il nome della sessione.

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Per distruggere, invece, tutte le sessioni presenti nel sito, bisognerà usare session_destroy().


## COOKIE ##


Creare i cookie

La creazione di un cookie non sarà rapidissima come quella delle sessioni, ma è egualmente semplice e sfrutterà la funzione setcookie(), che accetterà come parametri il nome, il contenuto, la scadenza, la path, il dominio, la sicurezza e l' httponly. Sostanzialmente, solo i primi tre son necessari.

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

In questo caso, il cookie durerà un' ora, in quanto 3600 sono i secondi in essa. Io consiglio vivamente, onde evitare problemi mentali sul calcolare il tempo, l' utilizzo di strtotime().

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!


Leggere i cookie

La lettura dei cookie è analoga a quella delle sessioni, infatti basterà riprendere la global var $_COOKIE, cosa applicabile anche all' isset() per controllare se esiste.

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!


Cancellare i cookie

La cancellazione di un cookie sfrutterà, nuovamente, la funzione setcookie(), impostandone come nome il nome del cookie da cancellare, il valore va bene anche vuoto e come data di scadenza un valore negativo, un' orario già passato.

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Bella guida Kaito..
Ma io avrei un problemino proprio con le sessioni.. come mai anche se chiudo il browser la sessione stessa non termina?