Hôm nay mình sẽ giới thiệu với các bạn về Session là gì và cách Session hoạt động trong lập trình web.
Đây là một khái niệm rất cơ bản nhưng cực kỳ quan trọng, đặc biệt khi bạn bắt đầu xây dựng website có chức năng đăng nhập, phân quyền người dùng hoặc lưu trạng thái tạm thời.
Trong bài viết này, chúng ta sẽ cùng nhau tìm hiểu:
- Session là gì và vì sao website cần Session
- Cơ chế hoạt động của Session phía sau trình duyệt và server
- Session được lưu trữ ở đâu và dùng trong những trường hợp nào
- Ví dụ Session thực tế để bạn dễ hình dung
Session là gì?
Session là cơ chế giúp server lưu trữ và ghi nhớ trạng thái của người dùng trong suốt quá trình họ truy cập website.
Do giao thức HTTP vốn là stateless (không ghi nhớ trạng thái), nên mỗi request gửi lên server đều độc lập với nhau. Session ra đời để giải quyết vấn đề này, giúp server biết:
- Bạn đã đăng nhập hay chưa
- Bạn là người dùng nào
- Bạn đang ở trạng thái nào trên website
👉 Nói đơn giản: Session giúp website “nhớ” bạn là ai.
Vì sao Session quan trọng?
Nếu không có Session:
- Bạn sẽ phải đăng nhập lại mỗi khi chuyển trang
- Giỏ hàng sẽ bị reset liên tục
- Website không thể phân quyền người dùng
Session là nền tảng cho:
- Hệ thống đăng nhập
- Giỏ hàng thương mại điện tử
- Phân quyền admin / user
- Lưu trạng thái tạm thời (flash message, form nhiều bước)
Cơ chế hoạt động của Session
Cơ chế hoạt động của Session thường gồm các bước sau:
- Người dùng gửi request đầu tiên lên server
- Server tạo một Session ID (ví dụ:
abc123xyz) - Session ID được gửi về trình duyệt thông qua cookie
- Trình duyệt gửi Session ID này ở các request tiếp theo
- Server dùng Session ID để lấy đúng dữ liệu Session tương ứng
📌 Lưu ý quan trọng:
- Cookie chỉ lưu Session ID
- Dữ liệu Session thật nằm ở server, không nằm ở trình duyệt
Ví dụ Session trong thực tế (đăng nhập)
📌 Tình huống
Bạn đăng nhập vào website w3dev.vn
🔍 Điều gì xảy ra?
- Server xác thực tài khoản thành công
- Server tạo Session:
session_id = xyz789 user_id = 15 username = admin - Trình duyệt lưu cookie:
PHPSESSID=xyz789 Từ đó, mỗi lần bạn chuyển trang:
- Trình duyệt gửi Session ID
- Server biết bạn là user đã đăng nhập
Ví dụ Session trong PHP (cơ bản)
Khởi tạo và lưu Session
<?php
session_start();
$_SESSION['user_id'] = 15;
$_SESSION['username'] = 'admin'; Lấy dữ liệu Session
<?php
session_start();
if (isset($_SESSION['user_id'])) {
echo "Xin chào " . $_SESSION['username'];
} Xoá Session (logout)
<?php
session_start();
session_destroy(); | Tiêu chí | Session | Cookie |
|---|---|---|
| Nơi lưu | Server | Trình duyệt |
| Bảo mật | Cao hơn | Thấp hơn |
| Dung lượng | Lớn | Nhỏ |
| Người dùng chỉnh sửa | Không | Có |
| Mục đích | Trạng thái người dùng | Lưu thông tin đơn giản |
👉 Trên thực tế, Session và Cookie thường đi cùng nhau, không thay thế nhau.
Session được lưu trữ ở đâu?
Tuỳ vào cấu hình hệ thống, Session có thể được lưu tại:
- File (đơn giản, dễ triển khai)
- Database
- In-memory cache (APCu, Memcached)
- Redis (phổ biến với hệ thống lớn)
👉 Với website có lượng truy cập cao, Session + Redis là lựa chọn rất tối ưu.
Một số lưu ý khi sử dụng Session
- Không lưu dữ liệu quá lớn vào Session
- Regenerate Session ID sau khi đăng nhập
- Thiết lập thời gian hết hạn hợp lý
- Không lạm dụng Session cho API stateless
- Luôn sử dụng HTTPS
Kết luận
Session là một thành phần cốt lõi trong lập trình web, giúp website:
- Ghi nhớ trạng thái người dùng
- Xây dựng hệ thống đăng nhập an toàn
- Tạo trải nghiệm liền mạch cho người dùng
👉 Nếu bạn đang học backend hoặc xây dựng website thực tế, hiểu rõ Session là điều bắt buộc.
Leave a comment
Your email address will not be published. Required fields are marked *