Session trong Laravel
Session là gì
- Là phiên làm việc để lưu trữ 1 biến và biến đó có thể tồn tại từ trang này đến trang khác(cùng tên miền)
- Session được lưu trữ trên server
- Thời gian sống của nó sẽ kết thúc khi ta xoá nó hoặc hết tuổi thọ (tắt trình duyệt)

Cách làm việc của session
- Khi Session được tạo ra, php tạo 1 định danh duy nhất cho session đó, định danh này là chuỗi ký tự ngẫu nhiên của 32 số hexa.
- Ví dụ như:
3c7foj34c3jj973hjkop2fc937e3443
- Ví dụ như:
- Khi đó 1 cookies được gọi là PHPSESSID sẽ được tự động gửi đến máy người dùng để lưu trữ chuỗi định danh session duy nhất ở trên
- Một file được tự động tạo và lưu trên server trong 1 thư mục tạm thời đã được chỉ định và nó mang tên của định danh duy nhất và được bắt đầu bằng sess_.
- Ví dụ:
sess_3c7foj34c3jj973hjkop2fc937e3443
- Ví dụ:

Cookie Là Gì
Theo định nghĩa thì cookie là một mẩu thông tin nhỏ được lưu trừ trên trình duyệt người dùng. Đây là một file nhỏ được trình duyệt lưu trữ trên máy tính của bạn. Trên cùng một trình duyệt mỗi một domain khác nhau sẽ có một cookie khác nhau. Ở đây một domain giống như một khách sạn ở ví dụ trên.
Bạn cũng cần lưu ý rằng khi bạn truy cập một domain trên nhiều tab khác nhau của cùng một trình duyệt thì trình duyệt này cũng chỉ sử dụng một file cookie duy nhất cho domain trên.
Sự Khác Nhau Giữa Session và Cookie
Tình Huống Thực Tế
Bây giờ để giúp bạn hình dung một cách dễ dàng chúng ta sẽ xem xét một tình huống thực tế đó là khi bạn cùng bạn bè đi du lịch bụi. Sau nhiều giờ chạy xe bạn đã tới một điểm dừng đầu tiên và quyết định sẽ thuê một khách sạn để ở. Lúc này bạn cần làm những thủ tục nào khi tới khách sạn? Đầu tiên thì bạn phải đưa nhân viên giấy CMND của bạn cho nhân viên khách sạn (điều này là bắt buộc theo quy định của luật lưu trú, theo miinhf có lẽ để cho cơ quan quản lý nhà nước dễ theo dõi). Sau đó các bước sẽ diễn ra như sau:
- Nhân viên này sau đó sẽ đưa bạn chìa khoá một phòng còn trống và trên chìa khoá đó có ghi số phòng.
- Tiếp theo nhân viên này sẽ lưu lại các thông tin về giờ giấc bạn vô K/S vào một cuốn sổ (trong cùng một ngày thì nhân viên này sẽ lưu thông tin của mỗi phòng khác nhau trên một dòng riêng biệt)
- Trong quá trình bạn ở khách sạn nhân viên này cũng sẽ ghi nhận các thông tin như phòng bạn ở bao nhiêu người, bạn có muốn ăn sáng, bạn cần dịch vụ giặt đồ, hay cùng như thời điểm bạn trả phòng là khi nào…
- Cuối cùng khi bạn trả phòng thì nhân viên sẽ hỏi số phòng của bạn để dò lại các thông tin trên.
Khách sạn sẽ sử dụng thông tin trên cuốn sổ để quản lý (tìm kiếm, cập nhật) thông tin của từng phòng. Tuy nhiên để khách sạn có thể xác định khách nào ở phòng nào thì cần có chìa khoá phòng.
Ở trên chìa khoá phòng đóng vai trò như một cookie, khách sạn đóng vai tròng là một server, các dòng lưu thông tin trên cuốn sổ giống như từng file session chứa thông tin của mỗi cookie (phòng) và cả cuốn sổ đóng vai trò như là thư mục chứa các file session.
Tại Sao Không Lưu Thông Tin Người Dùng Trên Cookie
Bạn hoàn toàn có thể lưu các thông tin của người dùng trên cookie (ví dụ thông qua JavaScript). Tuy nhiên điều này thường không được kiến nghị làm. Lý do là bởi vì để đảm bảo bảo mật.
Quay trở lại ví dụ về thuê khách sạn lúc trước và tưởng tượng nếu thay vì nhân viên trên lưu trữ thông tin về phòng bạn thuê trong cuốn sổ mà anh ta quản lý thì anh ta lại đưa bạn một tờ giấy trên đó có các thông tin này và để bạn giữa nó. Lúc này có hai khả năng xảy ra:
- Bạn có thể làm mất tờ giấy này và khách sạn có khả năng không lấy lại được toàn bộ các thông tin liên quan về phòng bạn thuê
- Bạn có thể giả mạo cá thông tin tên tờ giấy mà nhân viên đưa cho bạn
Do đó thông thường thì khách sạn chỉ đưa bạn chìa khoá phòng và toàn bộ thông tin liên quan khách sạn sẽ quản lý trên cuốn sổ. Điều này cũng diễn ra tương tự khi mà chúng ta chỉ lưu rất ít các thông tin trên cookie trình duyệt mà thay vào đó sẽ lưu các thông tin này trên session server.