Yii - Sessioni

Le sessioni rendono i dati accessibili attraverso varie pagine. Una sessione crea un file sul server in una directory temporanea in cui sono archiviate tutte le variabili di sessione. Questi dati sono disponibili per tutte le pagine del tuo sito web durante la visita di quel particolare utente.

Quando una sessione inizia, accade quanto segue:

  • PHP crea un ID univoco per quella particolare sessione.

  • Sul lato client (al browser) viene inviato un cookie chiamato PHPSESSID.

  • Il server crea un file nella cartella temporanea in cui vengono salvate tutte le variabili di sessione.

  • Quando un server desidera recuperare il valore da una variabile di sessione, PHP ottiene automaticamente l'ID di sessione univoco dal cookie PHPSESSID. Quindi, cerca nella sua directory temporanea il file necessario.

Per avviare una sessione, è necessario chiamare il session_start()funzione. Tutte le variabili di sessione vengono memorizzate nel file$_SESSIONvariabile globale. Puoi anche usare il fileisset() funzione per verificare se la variabile di sessione è impostata -

<?php
   session_start();
   if( isset( $_SESSION['number'] ) ) {
      $_SESSION['number'] += 1; }else { $_SESSION['number'] = 1;
   }
   $msg = "This page was visited ". $_SESSION['number'];
   $msg .= "in this session."; echo $msg;
?>

Per distruggere una sessione, dovresti chiamare il file session_destroy()funzione. Per eliminare una singola variabile di sessione, chiama il fileunset() funzione -

<?php
   unset($_SESSION['number']);
   session_destroy();
?>

Usare le sessioni in Yii

Le sessioni consentono di mantenere i dati tra le richieste degli utenti. In PHP, puoi accedervi tramite$_SESSIONvariabile. In Yii, puoi accedere alle sessioni tramite il componente dell'applicazione di sessione.

Step 1 - Aggiungi il file actionOpenAndCloseSession metodo al SiteController.

public function actionOpenAndCloseSession() {
   $session = Yii::$app->session;
   // open a session
   $session->open(); // check if a session is already opened if ($session->isActive) echo "session is active";
   // close a session
   $session->close(); // destroys all data registered to a session $session->destroy();
}

Nel codice sopra, otteniamo il componente dell'applicazione di sessione, apriamo una sessione, controlliamo se è attiva, chiudiamo la sessione e infine la distruggiamo.

Step 2 - Tipo http://localhost:8080/index.php?r=site/open-and-close-session nella barra degli indirizzi del browser web, vedrai quanto segue.

Per accedere alle variabili di sessione, puoi usare set() e get() metodi.

Step 3 - Aggiungi un file actionAccessSession metodo al SiteController.

public function actionAccessSession() {

   $session = Yii::$app->session;
	
   // set a session variable
   $session->set('language', 'ru-RU'); // get a session variable $language = $session->get('language'); var_dump($language);
		  
   // remove a session variable
   $session->remove('language'); // check if a session variable exists if (!$session->has('language')) echo "language is not set";
		  
   $session['captcha'] = [ 'value' => 'aSBS23', 'lifetime' => 7200, ]; var_dump($session['captcha']);
}

Step 4 - Vai a http://localhost:8080/index.php?r=site/access-session, vedrai quanto segue.