Session và Cookie trong PHP

Session và Cookie trong PHP

Khi làm việc với ngôn ngữ PHP chắc hẳn hầu hết các dev đều đã sử dụng Session và Cookie, bạn có đang hiểu rõ về session và cookie hoặc có thể đang nhầm lẫn giữa chúng? Trong bài viết này chúng ta sẽ tìm hiểu về khái niệm và sự khác nhau giữa session, cookie.

Cookie là một tệp nhỏ được lưu trữ trên náy tính của người dùng. Cookie thường được sử dụng để xác định, nhận dạng người dùng.
Vòng đời của 1 cookie:

![](/content/images/2019/08/image085.jpg)
  • (1) Đầu tiên, trình duyệt web yêu cầu một URL tương ứng với tập lệnh PHP. Trong tập lệnh đó là một lời gọi đến hàm setcookie được tích hợp sẵn trong PHP.
  • (2) Trang được tạo bởi tập lệnh PHP được gửi trở lại trình duyệt, cùng với tiêu đề cookie tập hợp HTTP có chứa tên (ví dụ: mycookie) và giá trị của cookie sẽ được đặt.
  • (3) Khi nhận được tiêu đề HTTP này, trình duyệt sẽ tạo và lưu trữ giá trị được chỉ định dưới dạng cookie có tên mycookie.
  • (4) Các yêu cầu trang tiếp theo đến trang web đó chứa tiêu đề cookie HTTP gửi cặp tên / giá trị (mycookie = value) đến tập lệnh được yêu cầu.
  • (5) Khi nhận được yêu cầu trang có tiêu đề cookie, PHP sẽ tự động tạo một mục trong mảng $ _COOKIE với tên của cookie ($ _COOKIE ['mycookie']) và giá trị của nó.

Session:

Session là một cách để lưu trữ thông tin (theo các biến) sẽ được sử dụng trên nhiều trang, các thông tin này sẽ được lưu trữ trên máy chủ. Theo mặc định, các biến Session kéo dài cho đến khi người dùng đóng trình duyệt. Session được gọi là cookie không liên tục vì thời gian sống của nó có thể được đặt bằng tay.
Vòng đời của 1 session:

![](/content/images/2019/08/php-interview-questions-lifecycle-of-php-session.png)
  • (1) Trình duyệt web gửi một yêu cấu Session đến server.
  • (1.1) PHP xử lý yêu cầu của trình duyệt.
  • (1.2) PHP sẽ tạo một session file tạm thời để lưu trữ session.
  • (2) PHP tạo SessionID.
  • (2.1) PHP cung cấp SessionID cho trình duyệt
  • (3) Khi trình duyệt muốn truy cập vào session, trình duyệt sẽ gửi yêu cầu kèm SessionID
  • (3.1) PHP sẽ tìm kiếm SessionID trong kho lưu trữ Session.
  • (4) Lấy ra dữ liệu tương ứng với SessionID.
  • (4.1) Trả về cho trình duyệt.
  • (5) Đóng trình duyệt.
  • (5.1) Session sẽ bị mất khỏi kho lưu trữ.
Session Cookie
Session có thể lưu trữ bất kỳ loại dữ liệu nào, vì giá trị là kiểu dữ liệu object. Cookie chỉ có thể lưu trữ kiểu dữ liệu string.
Session được lưu trữ ở phía server. Cookie được lưu trữ ở phía client.
Session được bảo mật vì nó được lưu trữ dạng nhị phân/dạng mã hóa và được giải mã tại server. Cookie không an toàn do được lưu trữ dưới dạng văn bản ở phía client.
Session độc lập cho mọi client. Cookie có thể hoặc không độc lập cho mọi client.
Không giới hạn về quy mô hoặc số lượng Session được sử dụng trong một ứng dụng. Kích thước của cookie được giới hạn ở 4096 bytes và số lượng cookie được sử dụng cũng bị giới hạn ở 20.
Chúng ta không thể vô hiệu hóa Session. Cookie có thể bị vô hiệu hóa.