Khi phát triển một ứng dụng với ngôn ngữ PHP, nếu bạn muốn một cách để lưu trữ thông tin (trong các biến) được lưu trữ trên server mà không phải trên máy tính người dùng thì Session trong PHP là thứ mà bạn đang tìm kiếm. Bài viết này sẽ giúp bạn hiểu rõ hơn về cách sử dụng và quản lý Session trong PHP.
Bạn muốn trở thành một nhà lập trình PHP chuyên nghiệp? Hãy bắt đầu với cuốn Ebook hữu ích từ Stringee!
>>> ĐĂNG KÝ NHẬN EBOOK PHP MIỄN PHÍ TẠI ĐÂY:
1. Session trong PHP là gì ?
Session trong PHP là một cơ chế lưu trữ thông tin trạng thái của người dùng giữa các lần request và response. Như bạn đã mô tả, khi phát triển ứng dụng trên internet, máy chủ web không giữ được thông tin về người dùng qua các lần truy cập do địa chỉ HTTP không duy trì trạng thái. Điều này dẫn đến việc mất thông tin quan trọng như đăng nhập, giỏ hàng, hoặc trạng thái cá nhân của người dùng.
Biến session trong PHP giải quyết vấn đề này bằng cách tạo ra một phiên làm việc (session) cho mỗi người dùng khi họ truy cập ứng dụng. Mỗi phiên này sẽ có một ID độc đáo và thông tin của người dùng sẽ được lưu trữ trên máy chủ và kết nối với ID phiên. Những thông tin này có thể bao gồm tên người dùng, trạng thái đăng nhập và các biến khác quan trọng.
Những biến session tồn tại từ lần request đầu tiên cho đến khi người dùng đóng trình duyệt hoặc khi phiên làm việc hết hạn. Điều này giúp duy trì trạng thái của người dùng qua nhiều trang của ứng dụng mà không cần phải gửi thông tin liên tục qua các request.
>>> Xem thêm các bài viết về PHP
Lập trình hướng đối tượng (OOP) trong PHP
Xây dựng ứng dụng web hoàn chỉnh với PHP
2. Bắt đầu với một Session trong PHP
Đầu tiên hãy chắc chắn rằng bạn đã cài đặt môi trường phát triển PHP, nếu chưa hãy xem ngay tại đây.
Session bắt đầu bằng cách sử dụng hàm session_start()
. Hàm này khởi tạo hoặc khôi phục một session. Nếu session đã tồn tại thì nó sẽ được khôi phục, nếu không thì một session mới sẽ được tạo. Biến session sẽ được đặt bằng biến toàn cục PHP: $_SESSION
.
Code mẫu:
<?php
// bắt đầu một session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Tạo biến session
$_SESSION["id"] = "ST123456";
$_SESSION["username"] = "Stringee";
// Thay đổi biến session
$_SESSION["id"] = "TS987654";
?>
</body>
</html>
3. Truy cập giá trị biến Session trong PHP
Bây giờ bạn có thể truy cập giá trị đã được lưu trữ trong biến Session bằng cách sử dụng $_SESSION
với key tương ứng:
Code mẫu:
<?php
// bắt đầu một session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?
echo $_SESSION['username'];
?>
</body>
</html>
Lưu ý rằng bạn cần bắt đầu session ở đầu mỗi trang nơi bạn muốn truy cập giá trị session và kiểm tra giá trị đã được lưu trữ vào biến session hay chưa trước khi truy cập. Điều này giúp đảm bảo rằng bạn có thông tin cần thiết từ người dùng qua các trang của ứng dụng.
4. Xóa dữ liệu khỏi Session trong PHP
Để xóa tất cả các biến session toàn cầu hãy sử dụng session_unset()
và session_destroy()
.
session_unset()
: Hàm này sẽ xóa tất cả các biến session, nhưng phiên làm việc vẫn tồn tại.
session_destroy()
: Hàm này sẽ hủy bỏ toàn bộ session, kể cả phiên làm việc và việc này sẽ giúp tránh việc sử dụng lại session trước đó.
Lưu ý rằng sau khi gọi session_destroy()
, bạn cần bắt đầu một phiên làm việc mới nếu bạn muốn sử dụng session tiếp theo.
Bạn cũng có thể sử dụng hàm unset()
để xóa một biến từ session.
Code mẫu:
<?php
// bắt đầu một session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?
unset($_SESSION['username']);
?>
</body>
</html>
5. Cài đặt timeout cho Session trong PHP
Cài đặt timeout cho session là một bước quan trọng để đảm bảo an toàn và hiệu quả trong việc quản lý phiên làm việc. Timeout xác định khoảng thời gian mà một phiên làm việc có thể tồn tại trước khi tự động hủy bỏ. Điều này giúp ngăn chặn việc giữ phiên làm việc mở quá lâu mà không sử dụng.
Cài đặt timeout cho session được thực hiện thông qua tùy chọn session.gc_maxlifetime
trong tệp cấu hình php.ini
. Giá trị của tùy chọn này được tính bằng giây và đại diện cho thời gian tối đa mà một phiên làm việc có thể tồn tại trước khi bị hủy bỏ.
Dưới đây là một ví dụ về cách cài đặt timeout cho session trong tệp cấu hình php.ini
:
// Cài đặt timeout cho session là 30 phút
session.gc_maxlifetime = 1800;
Lưu ý rằng session.gc_maxlifetime
chỉ đặt thời gian sống tối đa cho session, nhưng thực tế việc thu hồi tài nguyên của session phụ thuộc vào cơ chế thu dọn rác của PHP (garbage collection). Các phiên làm việc có thể không được hủy bỏ ngay lập tức sau khi timeout, nhưng sẽ được thu dọn bởi garbage collection trong các chu kỳ sau đó.
Tổng kết
Session là một công cụ mạnh mẽ trong PHP giúp lưu trữ thông tin trạng thái người dùng. Việc hiểu rõ về cách sử dụng và quản lý session không chỉ giúp ứng dụng của bạn an toàn hơn mà còn tối ưu hiệu suất. Đừng quên luôn giữ an toàn thông tin session để tránh các vấn đề bảo mật và luôn nhớ các chú ý về cách sử dụng Session trong PHP.
>>> Xem thêm các bài viết về PHP
Hướng dẫn tạo trang web động bằng PHP
Kết nối cơ sở dữ liệu trong PHP
Tìm hiểu về Regular Expression trong PHP
Stringee Communication APIs là giải pháp cung cấp các tính năng giao tiếp như gọi thoại, gọi video, tin nhắn chat, SMS hay tổng đài CSKH cho phép tích hợp trực tiếp vào ứng dụng/website của doanh nghiệp nhanh chóng. Nhờ đó giúp tiết kiệm đến 80% thời gian và chi phí cho doanh nghiệp bởi thông thường nếu tự phát triển các tính năng này có thể mất từ 1 - 3 năm.
Bộ API giao tiếp của Stringee hiện đang được tin dùng bởi các doanh nghiệp ở mọi quy mô, lĩnh vực ngành nghề như TPBank, VOVBacsi24, VNDirect, Shinhan Finance, Ahamove, Logivan, Homedy, Adavigo, bTaskee…
Quý bạn đọc quan tâm xin mời đăng ký NHẬN TƯ VẤN TẠI ĐÂY: