Asked Jul 7th, 2020 2:42 a.m. 5829 0 2
  • 5829 0 2
0

Xử lý Cookie trong laravel

Share
  • 5829 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 ANSWERS


Answered Jul 7th, 2020 2:52 a.m.
Accepted
+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

Share
Avatar TinhTN @tinhtn89
Jul 7th, 2020 3:08 a.m.

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?

+1
| Reply
Share
Avatar Son Dao Thai @dao.thai.son
Jul 7th, 2020 3:17 a.m.

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.

0
| Reply
Share
Avatar Phạm Tuấn Anh @phamtuananh760
Jul 7th, 2020 3:27 a.m.

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

0
| Reply
Share
Avatar TinhTN @tinhtn89
Jul 7th, 2020 3:37 a.m.

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

0
| Reply
Share
Answered Jul 7th, 2020 2:47 a.m.
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 =))

Share
Avatar TinhTN @tinhtn89
Jul 7th, 2020 3:24 a.m.

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.
0
| Reply
Share
Viblo
Let's register a Viblo Account to get more interesting posts.