12/10/2018, 17:11

Session trong Laravel

Khi hệ thống HTTP không có chỗ lưu trữ, sessions cung cấp một cách để lưu thông tin từ các yêu cầu của người dùng. Laravel cung cấp đầy đủ session backends thông qua API để hỗ trợ việc này. Hỗ trợ các backend như Memcached, Redis, và cơ sở dữ liệu đã có sẵn.

Khi hệ thống HTTP không có chỗ lưu trữ, sessions cung cấp một cách để lưu thông tin từ các yêu cầu của người dùng. Laravel cung cấp đầy đủ session backends thông qua API để hỗ trợ việc này. Hỗ trợ các backend như MemcachedRedis, và cơ sở dữ liệu đã có sẵn.

Cấu hình

File cấu hình session lưu ở config/session.php. Hãy chắc rằng bạn nắm rõ tất cả các thông tin cấu hình của session trước khi tùy chỉnh lại tệp tin này. Mặc định, Laravel sẽ cấu hình sử dụng filesession driver, nó sẽ hoạt động tốt cho nhiều ứng dụng. Đối với production, bạn có thể cân nhắc sử dụng memcached hoặc redis drivers để cho hiệu năng của session tốt hơn.

Các session driver được định nghĩa là nơi lưu trữ dữ liệu session qua các request. Laravel đã tích hợp sẵn một số session driver sau:

  • file - sessions sẽ lưu tại storage/framework/sessions.
  • cookie - sessions sẽ lưu có bảo mật, mã hóa cookies.
  • database - sessions sẽ lưu trong cơ sở dữ liệu được dùng trong ứng dụng của bạn.
  • memcached / redis - sessions sẽ lưu và truy suất nhanh hơn, dựa trên cache.
  • array - sessions sẽ được lưu trong mảng PHP và sẽ tồn tại lâu.

Trong file config/session.php

   'driver' => env('SESSION_DRIVER', 'file'),
   //nơi lưu trữ session

    'lifetime' => 120,
    //thời gian tồn tại của session được tính theo phút

    'expire_on_close' => false,
    //nếu là true thì tắt trình duyệt sẽ mất session,false thì ngược lại

Để sử dụng được session thì ta phải đặt trong middleware web

Ví Dụ

Route::group(['middleware'=>'web'],function(){
 
    Route::get('/route-session',function(){
 
        session()->put('session','Laravel');
 
        echo session('session');
         
    });
});

 

2.Các hàm trong session

- Các sử dụng 

- session::phuongthuc;

- session()->phuongthuc;

- Các hàm trong session

Ví dụ về các hàm trong session

ví dụ  (put)

Route::group(['prefix'=>'admin','middleware'=>'auth'],function(){
	
	Route::get('/route-session',function(){

		session()->put('session','Laravel');
		
		echo session()->get('session');
        // hoặc dùng echo session('session);
        // Lấy dữ liệu t dùng get() để lấy giá trị của session
		// Kết quả trả về là Laravel
	});

Ví dụ kiểm tra tồn tại session chưa t dùng hàm has()

Route::group(['prefix'=>'admin','middleware'=>'auth'],function(){

	Route::get('/route-session',function(){

		session()->put('session','Laravel');
		
		if (session()->has('session')) {
			echo 'Session đã tồn tại';
		}else{
			echo 'Không tồn tại session';
		}
                //kết quả là Session đã tồn tại
	});

 

Ví dụ xóa 1 session và xóa tất cả session

Route::group(['prefix'=>'admin','middleware'=>'auth'],function(){

	Route::get('/route-session',function(){

		session()->put('session','Laravel');
		
		session()->put('haivan','Hasonhaivan');

  		session()->forget('haivan');
  		//xóa từng session mà mình muốn
  		//kết quả là session haivan bị xóa

  		session()->flush();
  		//xóa tất cả session đang tồn tại
  		//kết quả là đã xóa tất cả session
		echo session('session');

		echo "<br>";

		echo session('haivan');

	});

Ví dụ flash

Thỉnh thoảng bạn có một vài dữ liệu mà chỉ muốn nó lưu tại lần truy xuất tiếp theo. Bạn có thể dùng phương thức flash. Dữ liệu lưu trong session sử dụng phương thức trên chỉ tồn tại duy nhất trong lần HTTP request tiếp theo, sau đó sẽ tự động được xóa. Flash data thường dùng để biểu thị các trạng thái, thông báo, tin nhắn

Route::group(['middleware'=>'web'],function(){
 	
 	Route::get('/session',function(){
 		session()->put('khoahoc','Laravel');

 		session()->put('laptrinh','lap trinh laravel');

 		Session::put('laravel','Lavel');
 		session()->flash('mess','Tin Nhan');

 		echo session('laravel');

 		echo "<br>";
 		echo 'Đã thành công';
 		echo "<br>";
 		
 		echo "<br>";
 		echo session('laptrinh');
 		 echo "<br>";
 		
 	});
 	Route::get('/mess',function(){
 		echo session('mess');
 	});

});
Bài liên quan

Session trong Laravel

Khi hệ thống HTTP không có chỗ lưu trữ, sessions cung cấp một cách để lưu thông tin từ các yêu cầu của người dùng. Laravel cung cấp đầy đủ session backends thông qua API để hỗ trợ việc này. Hỗ trợ các backend như Memcached, Redis, và cơ sở dữ liệu đã có sẵn.

Bui Anh Tu viết 1 tuần trước

Làm việc với Session trong Laravel

Session là một cơ chế cho phép ứng dụng web có thể lưu trữ dữ liệu người dùng (hay rộng hơn là client) và sử dụng dữ liệu này ở nhiều lượt truy cập khác nhau diễn ra sau đó. Sử dụng Session API cung cấp bởi Laravel, các lập trình viên chúng ta có thể làm việc với session một cách thuận tiện. Với ...

Vũ Văn Thanh viết 10:38 ngày 07/09/2018

Tìm hiểu về Session trong laravel

Giới thiệu Hệ thống HTTP không có chỗ lưu trữ, thế nên sessions cung cấp cho ta một cách để lưu trữ thông tin các yêu cầu từ người sử dụng. Laravel cung cấp đầy đủ hệ thống thống nhất thông qua API để hỗ trợ việc này. Hỗ trợ các back-ends nổi tiếng như Memcached, Redis, và cơ sở dữ liệu đã được ...

Bùi Văn Nam viết 16:55 ngày 12/08/2018

Thủ thuật Eloquent trong Laravel

Trong bài viết này, mình sẽ chia sẻ một vài thủ thuật hay mà bạn có thể làm với Eloquent của Laravel. Như chúng ta đã biết thì Laravel hỗ trợ cho chúng ta nhiều cách để tương tác với cơ sở dữ liệu. Và Eloquent ORM là một thế mạnh rất lớn Laravel có trong khi các framework không hỗ trợ. Vì vậy tại ...

Hoàng Hải Đăng viết 20:57 ngày 11/08/2018

Tự động hóa front-end vs Laravel Mix trong Laravel(P1)

Mình chính xác là 1 coder lười, vì vậy mình muốn mọi thứ đều tự động hóa. Đặc biệt khi mà ngày nay có quá nhiều processor(SASS,LESS,STYLUS...) dành cho CSS, hay việc ES6 đã xuất hiện từ 2015 giúp việc code front-end của chúng ta trở nên uyển chuyển & chuyên nghiệp hơn rất nhiều. Nhưng điều đáng ...

Trịnh Tiến Mạnh viết 20:56 ngày 11/08/2018
+2