PHP: creare una classe per la storage delle sessioni
Possiamo prendere spunto dal web storage in JavaScript per implementare una classe PHP per gestire le sessioni.
La classe potrebbe essere la seguente:
class SessionStorage {
public $id; // ID univoco
public $length; // Numero di elementi
public function __construct()
{
$this->id = md5( $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR'] );
$this->length = 0;
}
public function initialize()
{ // Crea la sessione
session_start();
$_SESSION['data'] = [];
$_SESSION['id'] = $this->id;
}
public function setItem( $key, $value )
{
$_SESSION['data'][$key] = $value; // Imposta una chiave e un valore
$this->setLength(); // Aggiorna il numero di elementi
}
public function removeItem( $key )
{
unset( $_SESSION['data'][$key] ); // Rimuove una chiave
$this->setLength();
}
public function clear()
{ // Elimina la sessione e i dati
session_destroy();
$_SESSION = [];
$this->length = 0;
$this->id = '';
}
public function hasItem( $key )
{ // Verifica che una chiave sia presente
return array_key_exists( $key, $_SESSION['data'] );
}
private function setLength()
{
$this->length = count( $_SESSION['data'] );
}
}
Esempio d'uso:
$session = new SessionStorage();
$session->initialize();
$session->setItem( 'test', 1 );