Laravel - sesja

Sesje służą do przechowywania informacji o użytkowniku we wszystkich żądaniach. Laravel zapewnia różne sterowniki, takie jakfile, cookie, apc, array, Memcached, Redis, i databasedo obsługi danych sesji. Domyślnie używany jest sterownik plików, ponieważ jest lekki. Sesję można skonfigurować w pliku przechowywanym pod adresemconfig/session.php.

Dostęp do danych sesji

Aby uzyskać dostęp do danych sesji, potrzebujemy instancji sesji, do której można uzyskać dostęp za pośrednictwem żądania HTTP. Po pobraniu instancji możemy użyćget() metoda, która przyjmie jeden argument, “key”, aby uzyskać dane sesji.

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

Możesz użyć all() metoda, aby uzyskać wszystkie dane sesji zamiast get() metoda.

Przechowywanie danych sesji

Dane mogą być przechowywane w sesji przy użyciu rozszerzenia put()metoda. Plikput() metoda przyjmie dwa argumenty, plik “key” i “value”.

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

Usuwanie danych sesji

Plik forget()służy do usuwania elementu z sesji. Ta metoda zajmie“key” jako argument.

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

Posługiwać się flush() metoda zamiast forget()metoda usunięcia wszystkich danych sesji. Użyjpull()metoda pobierania danych z sesji i późniejszego ich usunięcia. Metoda pull () również zajmiekeyjako argument. Różnica międzyforget() i pull() metoda jest taka forget() metoda nie zwróci wartości sesji i pull() metoda zwróci go i usunie tę wartość z sesji.

Przykład

Step 1 - Utwórz kontroler o nazwie SessionController wykonując następujące polecenie.

php artisan make:controller SessionController --plain

Step 2 - Po pomyślnym wykonaniu otrzymasz następujące dane wyjściowe -

Step 3 - Skopiuj następujący kod do pliku pod adresem

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 - Dodaj następujące wiersze w app/Http/routes.php plik.

app/Http/routes.php

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

Step 5 - Odwiedź następujący adres URL, aby set data in session.

http://localhost:8000/session/set

Step 6 - Dane wyjściowe będą wyglądać tak, jak pokazano na poniższej ilustracji.

Step 7 - Odwiedź następujący adres URL, aby get data from session.

http://localhost:8000/session/get

Step 8 - Dane wyjściowe będą wyglądać tak, jak pokazano na poniższej ilustracji.

Step 9 - Odwiedź następujący adres URL, aby remove session data.

http://localhost:8000/session/remove

Step 10 - Zobaczysz komunikat, jak pokazano na poniższym obrazku.