26/10/2018, 20:03

Cookie Trong Laravel

Tất cả cookies dược tạo bởi Laravel framework đều được mã hóa và ký một mã xác thực, nghĩa là chúng có thể bị coi là không hợp lệ nếu nó bị thay đổi phía dưới client. Để lấy một giá trị cookie từ request, sử dụng phương thức cookie từ Illuminate\Http\Request:

Cookie có thể được đính kèm tới response bằng sử dụng phương thức withCookie(). Tạo một response khởi tạo từ Illiminate\Http\Response để gọi phương thức withCookie(). Cookie được tạo ra bằng Laravel được mã hóa và ký tên đóng mọc đỏ, nên nó không thể bị thay đổi hoặc đọc được từ client.

Thiết lập Cookie bằng PHP

return response('name')->cookie('name' ,'giá trị', '$time' ,'$path, '$domain', '$secure');

  • Name − Thiết lập tên của Cookie và nó được lưu trữ trong một biến môi trường là HTTP_COOKIE_VARS. Biến này được sử dụng khi truy cập vào Cookie.

  • Value − Thiết lập giá trị của biến name và nó là nội dung mà bạn thực sự muốn lưu trữ.

  • Time − Chỉ ra hạn sử dụng của Cookie. Thời gian tính bằng giây từ 1/1/1970. Sau thời gian này, Cookie sẽ không thể truy cập. Nếu tham số này không được thiết lập thì Cookie sẽ tự động hết hiệu lực khi trình duyệt bị đóng.

  • Path − Xác định các thư mục mà Cookie có hiệu lực. Một ký tự dấu gạch chéo duy nhất (/) cho phép Cookie có hiệu lực đối tất cả các thư mục.

  • Domain − Xác định tên miền. Tất cả các Cookie chỉ có hiệu lực cho tên miền đã đưa ra.

  • Security − Nó có thể được thiết lập thành 1 để chỉ rằng Cookie này chỉ được gửi bằng truyền dẫn an toàn sử dụng HTTPS, ngược lại nếu thiết lập thành 0, nó có nghĩa rằng Cookie có thể gửi bằng HTTP thông thường.

  • Có rất nhiều tham số trong phương thức thiết lập cookie, tuy nhiên ngắn gọn chỉ cần cung cấp 3 tham số đầu.

  • return response('name')->cookie('name' ,'giá trị' ,'$time');
    // Có tham số thường xuyên xử dụng
  • Nếu bạn muốn tạo một Symfony\Component\HttpFoundation\Cookie có thể response sau một khoảng thời gian, bạn có thể sử dụng helper global cookie. Khi đó cookie sẽ không gửi lại cho client trừ khi nó được gán vào response instance:

  • $cookie = cookie('name' ,'giá trị' ,'$time');
    return response('name')->cookie($cookie);

    Cookie có thể được đính kèm tới response bằng sử dụng phương thức withCookie(). Tạo một response khởi tạo từclass Illiminate\Http\Response để gọi phương thức withCookie(). Cookie được tạo ra bằng Laravel được mã hóa và ký tên đóng mọc đỏ, nên nó không thể bị thay đổi hoặc đọc được từ client.

     
  • Ví dụ tạo cookie trong laravel

  •  

  • namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    use Illuminate\Http\Response;
    use App\Models\Category;
    
    
    class CategoryController extends Controller
    {
        public function setCookie(){
            $response = new Response();
            //khởi tạo response
            $value = 'Lập trình laravel';
            //gán giá trị của cookie
            $time = 1;
            //gán thời gian tồn tại của cookie tính bằng phút
            $response->withCookie('BuiTu',$value,$time);
            echo "Đã Set Cookie";
            return $response;
            
        }
        public function getCookie(Request $request){
        	echo "Họ Tên Là :";
            return $request->cookie('BuiTu');
        }
    }
    
    //Route
    Route::get('/setcookie',[
    		'uses'=>'\App\Http\Controllers\CategoryController@setCookie',
    		'as'=>'admin.getCookie'
    	]);	
    Route::get('/getcookie',[
    		'uses'=>'\App\Http\Controllers\CategoryController@getCookie',
    		'as'=>'admin.cooke'
    	]);

    Nếu muốn cookie tồn tại mãi mãi ta dùng phương thức forever:

  • $response->withCookie(cookie()->forever('BuiTu',$value));

    Nếu muốn xóa cookie thì chỉ với tham số name nhưng nó không phải lúc nào cũng hoạt động.

  •  

+3