Site logo

PHP Development

Tìm hiểu cookie trong PHP

Cookie trong PHP là một cách để lưu trữ dữ liệu trên máy khách. Cookie được gửi từ máy chủ đến trình duyệt và được lưu trữ trên máy khách. Mỗi lần trình duyệt yêu cầu một trang từ máy chủ, cookie sẽ được gửi kèm theo yêu cầu đó.

setcookie()

Hàm setcookie() được sử dụng để thiết lập một cookie. Cookie phải được thiết lập trước khi có bất kỳ đầu ra nào từ trang PHP.

Cú pháp

setcookie(name, value, expire, path, domain, secure, httponly);

Ví dụ

setcookie("user", "JohnDoe", time() + 3600, "/"); // Cookie tồn tại trong 1 giờ
echo "Cookie 'user' is set.";

Cookie được lưu trữ trong biến siêu toàn cục $_COOKIE. Bạn có thể truy cập giá trị của cookie giống như một mảng liên kết.

Ví dụ

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

Để xóa một cookie, bạn chỉ cần thiết lập nó với một thời gian hết hạn trong quá khứ.

Ví dụ

setcookie("user", "", time() - 3600, "/"); // Xóa cookie 'user'
echo "Cookie 'user' is deleted.";

Các tùy chọn của setcookie()

expire

Thời gian hết hạn của cookie được thiết lập bằng cách sử dụng dấu thời gian Unix. Nếu không được thiết lập, cookie sẽ hết hạn khi trình duyệt đóng.

path

Đường dẫn trên máy chủ mà cookie sẽ được gửi. Nếu không được thiết lập, mặc định là đường dẫn của tập lệnh hiện tại.

domain

Tên miền mà cookie sẽ được gửi. Nếu không được thiết lập, mặc định là tên miền của tập lệnh hiện tại.

secure

Nếu được thiết lập thành true, cookie sẽ chỉ được gửi qua kết nối HTTPS.

httponly

Nếu được thiết lập thành true, cookie sẽ chỉ có thể truy cập thông qua giao thức HTTP và không thể truy cập thông qua JavaScript.

Ví dụ

setcookie("user", "JohnDoe", time() + 3600, "/", "example.com", true, true);

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

Ví dụ

if (isset($_COOKIE['user'])) {
    echo "User cookie is set.";
} else {
    echo "User cookie is not set.";
}

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 cookie bằng cách sử dụng hàm serialize()unserialize().

Ví dụ

$user = ["name" => "JohnDoe", "email" => "john@example.com"];
setcookie("user", serialize($user), time() + 3600, "/");

if (isset($_COOKIE['user'])) {
    $user = unserialize($_COOKIE['user']);
    echo "Name: " . $user['name']; // Output: Name: JohnDoe
    echo "Email: " . $user['email']; // Output: Email: john@example.com
}

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

Cookie trong PHP là một công cụ mạnh mẽ để lưu trữ dữ liệu trên máy khách. Bằng cách hiểu và sử dụng các hàm cookie như setcookie(), $_COOKIE, và serialize(), bạn có thể quản lý dữ liệu cookie một cách hiệu quả và an toàn. Phiên cũng là một công cụ hữu ích để lưu trữ dữ liệu trên máy chủ, nhưng cần được sử dụng cẩn thận để đảm bảo bảo mật.