Cookie trong PHP
Cookie là gì?
Cookie thường được sử dụng để xác định người dùng. Cookie là một file nhỏ mà máy chủ nhúng vào máy tính của người dùng.
Mỗi lần người dùng sử dụng trình duyệt truy cập website, máy chủ sẽ gửi cookie về máy tính người dùng. Với PHP, bạn có thể tạo và đọc các giá trị cookie rất dễ dàng.
Tạo Cookies bằng PHP
Hàm setcookie()
trong PHP sẽ được sử dụng để tạo cookie.
Cú pháp
setcookie(name, value, expire, path, domain, secure, httponly);
Chỉ tham số name là bắt buộc. Tất cả các thông số khác là tùy chọn.
Tạo và đọc Cookie trong PHP
Ví dụ sau đây tạo một cookie có tên “user” với giá trị “John Doe”. Cookie sẽ hết hạn sau 30 ngày (86400 * 30).
Ký tự “/” có nghĩa là cookie có sẵn trong toàn bộ trang web (nếu không muốn như vậy, bạn có thể chọn thư mục bạn muốn).
Sau đó, chúng tôi sẽ truy xuất giá trị “user” của cookie (sử dụng biến toàn cục $_COOKIE
). Chúng tôi cũng sử dụng hàm isset()
để kiểm tra xem cookie đã được thiết lập giá trị chưa:
<?php
$cookie_name = "user";
$cookie_value = "John Doe";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
?>
<html>
<body>
<?php
if(!isset($_COOKIE[$cookie_name])) {
echo "Cookie named '" . $cookie_name . "' is not set!";
} else {
echo "Cookie '" . $cookie_name . "' is set!<br>";
echo "Value is: " . $_COOKIE[$cookie_name];
}
?>
</body>
</html>
Chạy lần đầu tiên thì kết quả như sau:
Cookie 'user' is not set!
Chạy lại thì kết quả như sau:
Cookie 'user' is set!
Value is: John Doe
Lưu ý: Hàm
setcookie()
phải đặt TRƯỚC thẻ <html>.
Lưu ý: Giá trị của cookie được tự động mã hóa khi gửi cookie và tự động giải mã khi nhận được (để ngăn chặn mã hóa hãy sử dụng hàm
setrawcookie()
).
Cập nhật giá trị cookie
Để cập nhật giá trị của cookie, chỉ cần gọi lại hàm setcookie()
và truyền giá trị mới như dưới đây:
<?php
$cookie_name = "user";
$cookie_value = "Alex Porter";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
?>
<html>
<body>
<?php
if(!isset($_COOKIE[$cookie_name])) {
echo "Cookie named '" . $cookie_name . "' is not set!";
} else {
echo "Cookie '" . $cookie_name . "' is set!<br>";
echo "Value is: " . $_COOKIE[$cookie_name];
}
?>
</body>
</html>
Chạy lần đầu tiên thì kết quả như sau:
Cookie 'user' is set!
Value is: John Doe
Chạy lại thì kết quả như sau:
Cookie 'user' is set!
Value is: Alex Porter
Xóa cookie
Để xóa cookie, hãy sử dụng hàm setcookie()
và đặt ngày hết hạn nhỏ hơn ngày hiện tại như ví dụ dưới đây:
<?php
// set the expiration date to one hour ago
setcookie("user", "", time() - 3600);
?>
<html>
<body>
<?php
echo "Cookie 'user' is deleted.";
?>
</body>
</html>
Kiểm tra kích hoạt Cookie
Ví dụ sau đây tạo một tập lệnh nhỏ để kiểm tra xem cookie có được bật hay không. Trước tiên, hãy thử tạo một cookie thử nghiệm với hàm setcookie()
, sau đó đếm biến mảng $_COOKIE, nếu lớn hơn không thì cookie đã được bật:
<?php
setcookie("test_cookie", "test", time() + 3600, '/');
?>
<html>
<body>
<?php
if(count($_COOKIE) > 0) {
echo "Cookies are enabled.";
} else {
echo "Cookies are disabled.";
}
?>
</body>
</html>
Đây là kết quả:
Cookies are enabled.