Laravel - Sessione

Le sessioni vengono utilizzate per memorizzare le informazioni sull'utente attraverso le richieste. Laravel fornisce vari driver comefile, cookie, apc, array, Memcached, Redis, e databaseper gestire i dati della sessione. Per impostazione predefinita, viene utilizzato il driver di file perché è leggero. La sessione può essere configurata nel file archiviato inconfig/session.php.

Accesso ai dati della sessione

Per accedere ai dati di sessione, abbiamo bisogno di un'istanza di sessione a cui è possibile accedere tramite richiesta HTTP. Dopo aver ottenuto l'istanza, possiamo usare ilget() metodo, che richiederà un argomento, “key”, per ottenere i dati della sessione.

$value = $request->session()->get('key');

Puoi usare all() metodo per ottenere tutti i dati della sessione invece di get() metodo.

Memorizzazione dei dati di sessione

I dati possono essere memorizzati in sessione utilizzando il put()metodo. Ilput() il metodo richiederà due argomenti, il “key” e il “value”.

$request->session()->put('key', 'value');

Eliminazione dei dati di sessione

Il forget()viene utilizzato per eliminare un elemento dalla sessione. Questo metodo richiederà“key” come argomento.

$request->session()->forget('key');

Uso flush() metodo invece di forget()metodo per eliminare tutti i dati della sessione. Utilizzare ilpull()metodo per recuperare i dati dalla sessione ed eliminarli in seguito. Anche il metodo pull () prenderàkeycome argomento. La differenza tra i fileforget() e il pull() metodo è quello forget() metodo non restituirà il valore della sessione e pull() il metodo lo restituirà ed eliminerà quel valore dalla sessione.

Esempio

Step 1 - Crea un controller chiamato SessionController eseguendo il seguente comando.

php artisan make:controller SessionController --plain

Step 2 - Dopo aver eseguito con successo, riceverai il seguente output -

Step 3 - Copia il codice seguente in un file in

app/Http/Controllers/SessionController.php.

app/Http/Controllers/SessionController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class SessionController extends Controller {
   public function accessSessionData(Request $request) {
      if($request->session()->has('my_name'))
         echo $request->session()->get('my_name');
      else
         echo 'No data in the session';
   }
   public function storeSessionData(Request $request) {
      $request->session()->put('my_name','Virat Gandhi');
      echo "Data has been added to session";
   }
   public function deleteSessionData(Request $request) {
      $request->session()->forget('my_name');
      echo "Data has been removed from session.";
   }
}

Step 4 - Aggiungi le seguenti righe a app/Http/routes.php file.

app/Http/routes.php

Route::get('session/get','SessionController@accessSessionData');
Route::get('session/set','SessionController@storeSessionData');
Route::get('session/remove','SessionController@deleteSessionData');

Step 5 - Visita il seguente URL a set data in session.

http://localhost:8000/session/set

Step 6 - L'output apparirà come mostrato nell'immagine seguente.

Step 7 - Visita il seguente URL a get data from session.

http://localhost:8000/session/get

Step 8 - L'output apparirà come mostrato nell'immagine seguente.

Step 9 - Visita il seguente URL a remove session data.

http://localhost:8000/session/remove

Step 10 - Verrà visualizzato un messaggio come mostrato nell'immagine seguente.