Le Sessioni in PHP

Le variabili utilizzate negli script php hanno validità ristretta ad una singola esecuzione della pagina. Una volta terminato lo script esse vengono deallocate. A questa regola fanno eccezione i cookie e le SESSIONI. Ad una variabile cosidetta di sessione si accede mediante l’array associativo $_SESSION, queste sono valide non solo nello script che le esegue ma anche in altri script del nostro progetto, facenti parte della medesima sessione.

La gestione delle variabili di sessione in PHP

La gestione delle variabili di sessione in PHP


Per essere più formali in PHP, con sessioni ci si rifesrisce appunto all’array associativo $_SESSION che contiene più variabili attive nella stessa sessione.
Il PHP mette a disposizione due comandi base per la gestione delle sessioni:
1) bool session_start(void): recupera la sessione corrente se esiste o ne crea una nuova, restituisce sempre true;
2) bool session_destroy(void): distrugge tutti i file relativi alla sessione corrente, restituisce true in caso di successo, false altrimenti.

Di seguito si riporta un semplice esempio, che non fa altro che incrementare una variabile di sessione semplicemente ricaricando lo script.

<?php
session_start();
?>
<html>
<head>
<title>Incrementa sessione</title>
</head>
<body>
<?php
if(isset($_SESSION['count']))
    echo("Hai visitato la pagina".$_SESSION['count']++."volte");
else{
    echo("Sei un nuovo utente!");
    $_SESSION['count']=1;
}    
?>
</body>
</html>

Ma come si fa a riconoscere che si tratta di utenti diversi?
Semplice tutto si basa sui cookie del browser. Mediante la funzione session_start() il PHP controlla se esiste nel client un cookie con nome PHPSESSID e gli associa un numero esadecimale generato casualmente e memorizzato nel client.
Però attenzione il comando session_start funziona come il comando header, non a caso esso manipola il protocollo HTTP, perciò deve essere invocato prima di ogni emissione di output sulle variabili di sessione.

Una sessione non è eterna, ci sono vari modi per far in modo che essa termini:
1) cancellando il cookie PHPSESSID
2) accedendo alle stesse pagina da un altro browser
3) chiudendo e riaccedendo al browser

In alternativa e possibile effettuare questa cancellazione anche esplicitamente utilizzando il comando session_destroy(), la quale istruzione deve però seguire la session_start(); altrimenti il sistema non è in grado di recuperare la vecchia sessione.

Le Sessioni in PHP ultima modidfica: 2014-04-25T16:33:43+02:00 da Gianluca Di Vincenzo
Posted in: PHP

By on 25 Aprile 2014

Tagged: , , ,