Session trong Laravel

Session trong Laravel
Trong Laravel, session là một cơ chế truyền tham số, nó cho phép chúng ta lưu trữ dữ liệu thông qua các request. Session cho phép chúng ta lưu vết người dùng thông qua ứng dụng. Laravel sử dụng hệ thống dựa trên trình điều khiển cho quản lý session, mỗi trình điều khiển được sử dụng để định nghĩa nơi dữ liệu session được lưu trữ.

Trong Laravel, session là một cơ chế truyền tham số, nó cho phép chúng ta lưu trữ dữ liệu thông qua các request. Session cho phép chúng ta lưu vết người dùng thông qua ứng dụng. Laravel sử dụng hệ thống dựa trên trình điều khiển cho quản lý session, mỗi trình điều khiển được sử dụng để định nghĩa nơi dữ liệu session được lưu trữ. Framework Laravel có các trình điều khiển session như sau:

    file: Dữ liệu session được lưu trữ trong file mã hóa đặt tại storage/framework/session.
    cookie: Dữ liệu session được lưu trữ trong cookie của người dùng an toàn và được bảo mật.
    database: Dữ liệu session được lưu trữ trong database của ứng dụng.
    apc: Dữ liệu session được lưu trữ trong APC.
    memcached: Dữ liệu session được lưu trữ trong Memcached.
    redis: Dữ liệu session được lưu trữ trong Redis.
    array: Dữ liệu session được lưu trữ trong mảng PHP.
Theo mặc định, kiểu lưu trữ Fileđược sử dụng vì nó nhẹ. Bạn có thể cấu hình Session trong file config/session.php.
Đối với kiểu lưu trữ Session trong database các bạn sẽ cần tạo thêm table session. Để tạo table trước hết các bạn cần tạo Migration:
php artisan make:migration creat_sessions_table

Lệnh này sẽ tạo filexxxx_creat_sessions_table.php (xxxx là ngày tháng tạo) trong thư mục database/migrations. Các bạn sửa lại function up() thành như sau:

Schema::create('sessions', function ($table) {
    $table->string('id')->unique();
    $table->unsignedInteger('user_id')->nullable();
    $table->string('ip_address', 45)->nullable();
    $table->text('user_agent')->nullable();
    $table->text('payload');
    $table->integer('last_activity');
});

Sau đó chạy lệnh:

php artisan migrate

Lưu trữ dữ liệu trong session

Sử dụng phương thức put của thể hiện Request chúng ta có thể lưu trữ dữ liệu trong session. Nó chấp nhận cả hai đối số “key” và “value”.

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

Lấy giá trị trong session

Sử dụng phương thức get chúng ta có thể lấy giá trị đơn từ session. Nó chấp nhận cả hai đối sô “key_name” và “default_value”.

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

Hoặc:

$value = $request->session()->get('key_name', 'default_name');

Sử dụng phương thức all chúng ta có thể lấy tất cả dữ liệu sẵn có trong session.

$all_data = $request->session()->all();

Kiểm tra sự tồn tại của session

Sử dụng phương thức has bạn có thể kiểm tra một giá trị có tồn tại trong session hay không. Nó trả về true nếu có tồn tại, ngược lại trả về null. Với cú pháp:

if($request->session()->has('key_name')){
      //
}

Xóa dữ liệu từ session

Sử dụng phương thức forget bạn có thể loại bỏ item được chỉ định từ session. Nó chấp nhận “key” là đối số.
$request->session->forget('key');
Nếu bạn muốn truy hồi một giá trị item trước khi xóa nó từ session, bạn có thể sử dụng phương thức pull:
$value = $request->session->pull('key', 'default');

Hoặc xoá tất cả item trong session: 

$request->session->flush();

Flash session

Dữ liệu được lưu trữ trong Flash Session chỉ tồn tại  trong một truy cập duy nhất diễn ra ngay sau lượt truy cập mà việc gán dữ liệu được thực hiện. Nó sẽ bị xóa ngay sau khi bạn F5 trình duyệt. Dữ liệu flash chủ yếu hữu ích cho việc sử dụng tạo các câu thông báo.

Ví dụ: Khi bạn sửa bài viết. Sau khi bấm nút update bạn muốn in ra câu thông báo thành công hay thất bại thì bạn có thể dùng Flash Session.

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

// Hoặc

\Session::flash('key', 'value')

 

Session ID

Nếu bạn muốn sinh ra session ID, bạn có thể sử dụng phương thức regenerate:

$request->session()->regenerate();

 

Qua bài vừa rồi hi vọng có thể giúp bạn hiểu hơn về session trong Laravel. Nhớ đừng quên theo dõi hoclaravel.vn để xem được những bài viết bổ ích hơn nữa nhé.

Các bạn cũng có thể để lại câu hỏi nếu có bất cứ thắc mắc nào ở phần bình luận phía dưới.

Đào Hữu Hải

Dev cùi tập tành làm nhà văn :D

Để lại bình luận