Laravel – Session

Sessions dùng để lưu trữ thông tin từ các requests người dùng. Laravel cung cấp các drive khác nhau để xử lý dữ liệu Sessions như file, cookie, database, memcached/redis, array. Theo mặc đinh, drive file được sử dụng bởi vì nó gọn nhẹ. Bạn có thể thay đổi config nó tại config\session.php.

Truy cập vào Session

Để truy cập dữ liệu Session, Bạn cần truy cập thông qua HTTP request. Sau đó dùng phương thức get() để lấy dữ liệu Session của 1 key.

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

Hoặc dùng all() để lấy tất cả Session.

Lưu trữ Session

Dùng phương thức put() để lưu trữ Session. Phương thức này với 2 giá trị key và value.

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

Xóa Session

Để xóa Session, bạn có thể sử dụng phương thức forget(). Với tham số truyền vào key muốn xóa.

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

Phương thức flush() để xóa tất cả session.

Phương thức pull() giống như forget() nhưng sẽ trả về giá trị của session rồi mới xóa.

Ví dụ

Step 1 : Tạo controller SessionController bằng lệnh command bên dưới.

php artisan make:controller SessionController

Step 2 : Thêm code như bên dưới vào controller SessionController vừa tạo.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

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 3 : Thêm code bên dưới vào routes/web.php.

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

Step 4 : Vào http://localhost:8000/session/set để lưu một session.

Step 5 : Vào http://localhost:8000/session/get để xem session vừa lưu.

Step 6 : Vào http://localhost:8000/session/remove để xóa session đã lưu.