Yêu cầu thg 7 7, 2020 2:42 SA 5830 0 2
  • 5830 0 2
0

Xử lý Cookie trong laravel

Chia sẻ
  • 5830 0 2

Mình đang sử dụng laravel và đang làm một phần khi lần đầu tiên vào website sẽ hiển thị popup chào mừng ( popup ở tất cả các trang con ). Chính vì vậy mình chỉ muốn chào mừng những khách mới, từ lần thứ 2 thì ko hiển thị nữa đỡ phải làm phiền người dùng. Mình dùng Cookie để làm việc này ( đặt khoảng 30 ngày) . Nếu chỉ có 1 page ví dụ liên hệ thì mình đã làm được. tuy nhiên mình ko biết cách làm cho nó ở tất cả các trang. Bây giờ mình muốn khi khách mới truy cập vào 1 page bất kì trên web thì biến cookie sẽ lưu lại và từ lần 2 họ vào thì đã có cookie rồi ( ko hiện thông báo nữa) . cái này với php thuần thì khá đơn giản chỉ set và get cookie là xong, nhưng trong laravel thì nó hơi khác mình chưa biêt cách xử lý. cảm ơn mọi người.

2 CÂU TRẢ LỜI


Đã trả lời thg 7 7, 2020 2:52 SA
Đã được chấp nhận
+2

Đơn giản bạn chỉ cần dùng tới facade này trong controller để lấy cookie Illuminate\Support\Facades\Cookie;

$value = Cookie::get('name');

và để set cookie vào response bạn dùng

Cookie::queue('name', 'value', $minutes);

ref: https://laravel.com/docs/7.x/requests#cookies

Chia sẻ
Avatar TinhTN @tinhtn89
thg 7 7, 2020 3:08 SA

Cảm ơn bạn. Mình muốn nó trên tất cả các url của web nên mình dùng view share trong appProvider

$viewweb = Cookie::queue('viewweb','Yes', 1); View()->share('viewweb', $viewweb);

Còn trong master blade thì mình chỉ kiểm tra biến viewweb là xong.

$viewweb = Cookie::get('viewweb','none'); @if($viewweb !== 'Yes') New @else OLD @endif

Bạn thấy sao?

Avatar Son Dao Thai @dao.thai.son
thg 7 7, 2020 3:17 SA

Mình thấy cách này có thể chạy được, nhưng nó chưa hẳn là cách tốt.

Avatar Phạm Tuấn Anh @phamtuananh760
thg 7 7, 2020 3:27 SA

@tinhtn89 Mình nghĩ lên sử dụng middleware

Avatar TinhTN @tinhtn89
thg 7 7, 2020 3:37 SA

@dao.thai.son điểm chưa tốt là gì bạn? và tốt hơn thì phải làm sao?

Đã trả lời thg 7 7, 2020 2:47 SA
0

Trong larravel thì cũng có thể làm set và get cookie dc như php thuần như cách bạn làm, nhưng theo mình thấy thì cách này không ổn lắm. Vì cookie chỉ lưu trên 1 máy cố định nên khi người dùng đăng nhập trên máy khác thì vẫn có popup chào mừng (n lần trên n máy) hoặc hết hạn cookie thì lại có popup. Thay thế cookie thì có thể dùng session, nhưng như cookie thì session cũng có thời hạn nên hết thời hạn thì lại có popup chào mừng. Theo mình thì lên lưu vào db, tạo 1 cột active chẳng hạn, khi có bất kì request nào thì cho active = true => nếu true thì ko hiện popup =))

Chia sẻ
Avatar TinhTN @tinhtn89
thg 7 7, 2020 3:24 SA

Cảm ơn bạn.

  • Session mình thấy ko ổn vì khi đóng trình duyệt session sẽ hết hạn và khi vào lại nó sẽ lại lên popup.
  • vì mình ko quản lý user đăng nhập nên việc lưu db thì thấy ko cần thiết lắm.
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí