Session Là Gì?
Session là một khái niệm phổ biến được dùng trong lập trình các website có kết nối với cơ sở dữ liệu database. Đặc biệt các chức năng như đăng nhập, đăng xuất người dùng sẽ khó có thể thực hiện được nếu không sử dụng session . Trong bài viết này tôi sẽ giải thích một cách đơn giản nhất để các ...
Session là một khái niệm phổ biến được dùng trong lập trình các website có kết nối với cơ sở dữ liệu database. Đặc biệt các chức năng như đăng nhập, đăng xuất người dùng sẽ khó có thể thực hiện được nếu không sử dụng session. Trong bài viết này tôi sẽ giải thích một cách đơn giản nhất để các bạn có thể hiểu được Session là gì và sử dụng session trong khi lập trình web như thế nào. Trước tiên chúng ta cùng tìm hiểu lý do tại sao session được ra đời.
Chú Thích: Nếu bạn muốn học thông qua ví dụ thì có thể tham khảo bài viết Sự Khác Nhau Giữa Session và Cookie Dành Cho Người Không Rành Về Lập Trình.
Tại Sao Cần Dùng Session
Việc giao tiếp giữa trình duyệt với máy chủ của website (hay webserver) được thực hiện thông qua hàng loạt các router trên mạng internet. Một vấn đề đặt ra trong quá trình giao tiếp này đó là làm sao để phân được giữa cá trình duyệt (máy tính) khác nhau. Ví dụ như bạn truy cập một trang bán hàng thì máy chủ cần:
- Phân biệt được các máy tính (trình duyệt) khác nhau: nói cách khác máy chủ cần phân biệt được trong những lượt truy cập gửi tới máy chủ thì đâu là từ máy tính bạn và đâu là của người khác
- Lưu thông tin của giỏ hàng: ví dụ như thông tin về số lượng hàng hoá bạn đã thêm vào giỏ hàng
Và để giải quyết vấn đề trên khái niệm session được ra đời.
Session Là Gì
Session đơn giản là 1 cách để chúng ta (các lập trình viên) lưu lại dữ liệu của người dùng sử dụng website. Giá trị của Session được lưu trong một tập tin trên máy chủ. Ví dụ khi bạn đăng nhập vào trang hoclaptrinh.org sử dụng địa chỉ email và mật khẩu người dùng mà bạn đã đăng ký trước đó. Máy chủ sau khi xác thực được thông tin bạn cung cấp là đúng nó sẽ sinh ra một tập tin (hay chính là session của trình duyệt của bạn) chứa dữ liệu cần lưu trữ của người dùng.
Bạn có thể tuỳ ý quyết định xem nên lưu trữ những thông tin nào vào Session. Nhưng thông thường chúng ta chỉ nên lưu những thông tin tạm thời trong session ví dụ như số lượng sản phẩm người dùng đã thêm vào giỏ nhưng chưa mua, hay những nhật xét đang được viết và lưu dưới dạng nháp nhưng chưa gửi đi. Những dữ liệu sử dụng lâu dài như nội dung nhận xét đã được gửi đi hay số sản phẩm đã được mua thì nên được thực hiện ở máy chủ chứa cơ sở dữ liệu.
Làm Sao Để Phân Biệt Session Của Các Trình Duyệt Khác Nhau
Sau khi chúng ta (các lập trình viên website) tạo ra một tập tin session trên máy chủ để lưu trữ dữ liệu tạm thời của người dùng thì chúng ta cần phải phân biệt được session nào là của người dùng nào. Để làm điều này thì với mỗi session tạo ra chúng ta cần tạo một cookie trên trình duyệt của người dùng tương ứng với nó. Cookie là một mẩu tin nhỏ có thể được trình duyệt tạo ra khi người dùng duyệt web và dùng để lưu trữ thông tin của người dùng ở phía trình duyệt (phía máy khách).
Cookie có thể được tạo ra mà không yêu cầu cần phải tạo ra 1 session trên server tương ứng với nó. Tuy nhiên mỗi session được tạo ra thì cần phải có một cookie tương ứng với nó để xác định xem session này được sử dụng cho trình duyệt nào. Nhờ sử dụng cookie mà chúng ta có thể phân biệt được giữa các session khác nhau của các trình duyệt khác nhau.