Site logo
Authors
  • avatar Nguyễn Đức Xinh
    Name
    Nguyễn Đức Xinh
    Twitter
Published on
Published on

Tìm hiểu Session trong PHP

session(phiên làm việc) trong PHP là một cách để lưu trữ thông tin (dữ liệu) trên nhiều trang web. Không giống như cookie, dữ liệu phiên được lưu trữ trên máy chủ và chỉ có một ID phiên duy nhất được lưu trữ trên máy khách.

Bắt đầu một session

session_start()

Hàm session_start() được sử dụng để bắt đầu một phiên hoặc tiếp tục một phiên hiện có. Hàm này phải được gọi ở đầu mỗi trang PHP trước khi có bất kỳ đầu ra nào.

Cú pháp

session_start();

Ví dụ

session_start();
$_SESSION['username'] = "JohnDoe";
echo "Session started and username is set.";

Truy cập dữ liệu phiên

Dữ liệu phiên được lưu trữ trong biến siêu toàn cục $_SESSION. Bạn có thể truy cập và sửa đổi dữ liệu này giống như một mảng liên kết.

Ví dụ

session_start();
echo "Username: " . $_SESSION['username']; // Output: Username: JohnDoe

Kiểm tra sự tồn tại của dữ liệu phiên

Bạn có thể sử dụng hàm isset() để kiểm tra xem một biến phiên có tồn tại hay không.

Ví dụ

session_start();
if (isset($_SESSION['username'])) {
    echo "Username is set.";
} else {
    echo "Username is not set.";
}

Xóa dữ liệu phiên

unset()

Hàm unset() được sử dụng để xóa một biến phiên cụ thể.

Ví dụ

session_start();
unset($_SESSION['username']);
echo "Username session variable is unset.";

session_unset()

Hàm session_unset() được sử dụng để xóa tất cả các biến phiên.

Ví dụ

session_start();
session_unset();
echo "All session variables are unset.";

session_destroy()

Hàm session_destroy() được sử dụng để hủy phiên hiện tại. Hàm này không xóa các biến phiên ngay lập tức, nhưng sẽ xóa chúng khi phiên kết thúc.

Ví dụ

session_start();
session_destroy();
echo "Session destroyed.";

Thiết lập thời gian sống của phiên

Bạn có thể thiết lập thời gian sống của phiên bằng cách cấu hình session.gc_maxlifetime trong tệp php.ini hoặc sử dụng hàm ini_set().

Ví dụ

ini_set('session.gc_maxlifetime', 3600); // Thiết lập thời gian sống của phiên là 1 giờ
session_start();

Lưu trữ dữ liệu phức tạp trong phiên

Bạn có thể lưu trữ các loại dữ liệu phức tạp như mảng và đối tượng trong phiên.

Ví dụ

session_start();
$_SESSION['user'] = [
    'username' => 'JohnDoe',
    'email' => 'john@example.com',
    'roles' => ['admin', 'editor']
];

echo "Username: " . $_SESSION['user']['username']; // Output: Username: JohnDoe

Session

  • Dữ liệu được lưu trữ trên máy chủ.
  • Bảo mật hơn vì dữ liệu không được lưu trữ trên máy khách.
  • Thời gian sống ngắn hơn, thường kết thúc khi trình duyệt đóng.
  • Sử dụng để lưu trữ thông tin nhạy cảm và dữ liệu người dùng trong suốt phiên làm việc.
  • Dữ liệu được lưu trữ trên máy khách.
  • Ít bảo mật hơn vì dữ liệu có thể bị truy cập bởi người dùng.
  • Thời gian sống có thể được thiết lập dài hạn.
  • Sử dụng để lưu trữ thông tin không nhạy cảm và dữ liệu cần duy trì qua nhiều phiên làm việc.

Use Case

Session

  • Lưu trữ thông tin đăng nhập của người dùng.
  • Lưu trữ dữ liệu giỏ hàng trong các trang thương mại điện tử.
  • Lưu trữ các thiết lập người dùng tạm thời.
  • Lưu trữ thông tin đăng nhập tự động.
  • Lưu trữ các tùy chọn người dùng như ngôn ngữ và giao diện.
  • Theo dõi hành vi người dùng trên trang web.

Demo

Session Demo

// Bắt đầu phiên
session_start();

// Thiết lập biến phiên
$_SESSION['username'] = "JohnDoe";

// Truy cập biến phiên
echo "Username: " . $_SESSION['username']; // Output: Username: JohnDoe

// Xóa biến phiên
unset($_SESSION['username']);

// Hủy phiên
session_destroy();
// Thiết lập cookie
setcookie("user", "JohnDoe", time() + 3600, "/"); // Cookie tồn tại trong 1 giờ

// Truy cập cookie
if (isset($_COOKIE['user'])) {
    echo "User is " . $_COOKIE['user']; // Output: User is JohnDoe
} else {
    echo "User cookie is not set.";
}

// Xóa cookie
setcookie("user", "", time() - 3600, "/"); // Xóa cookie 'user'

Kết luận

Phiên trong PHP là một công cụ mạnh mẽ để lưu trữ thông tin trên nhiều trang web. Bằng cách hiểu và sử dụng các hàm phiên như session_start(), $_SESSION, unset(), và session_destroy(), bạn có thể quản lý dữ liệu phiên một cách hiệu quả và an toàn. Cookie cũng là một công cụ hữu ích để lưu trữ dữ liệu trên máy khách, nhưng cần được sử dụng cẩn thận để đảm bảo bảo mật.