Cookie - PHP

Hôm nay, chúng ta sẽ học cách lưu trữ một lượng nhỏ thông tin trong chính trình duyệt của người dùng bằng cách sử dụng cookie PHP.

Cookie là gì?

Cookie là một tập tin văn bản nhỏ cho phép lưu trữ một lượng nhỏ dữ liệu (gần 4KB) trên máy tính của người dùng. Chúng thường được sử dụng để theo dõi thông tin như tên người dùng mà trang web có thể truy xuất để cá nhân hóa trang khi người dùng truy cập trang web lần sau.

Mẹo: Mỗi khi trình duyệt yêu cầu một trang đến máy chủ , tất cả dữ liệu của cookie sẽ tự động được gửi đến máy chủ trong yêu cầu đó.

Set Cookie trong PHP

Hàm setcookie() được sử dụng để thiết lập một cookie trong PHP. Đảm bảo rằng khi bạn gọi hàm setcookie() trước yêu cầu nào do tập lệnh của bạn tạo ra, nếu không cookie sẽ không được đặt.

Cú pháp của hàm này như sau:

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

Các tham số của hàm setcookie() có ý nghĩa như sau:

Tham số Miêu tả
name Tên của cookie.
value Giá trị của cookie.Không lưu trữ thông tin nhạy cảm vì giá trị này được lưu trữ trên máy tính của người dùng.
expires Ngày hết hạn ở định dạng dấu thời gian UNIX. Sau thời gian này, cookie sẽ không thể truy cập được.Giá trị mặc định là 0.
path Chỉ định đường dẫn trên máy chủ mà cookie sẽ có sẵn.Nếu được đặt thành /, cookie sẽ có sẵn trong toàn bộ miền.
domain Chỉ định miền mà cookie có sẵn cho ví dụ: www.example.com.
secure Trường này, nếu có, cho biết rằng cookie sẽ chỉ được gửi khi tồn tại kết nối HTTPS an toàn.

Mẹo: Nếu thời gian hết hạn của cookie được đặt thành 0 hoặc bị bỏ qua, cookie sẽ hết hạn vào cuối phiên tức là khi trình duyệt đóng.

Đây là một ví dụ sử dụng hàm setcookie() để tạo một cookie được đặt tên username và gán giá trị giá trị Loi Trai Tim cho nó. Nó cũng chỉ định rằng cookie sẽ hết hạn sau 30 ngày ( 30 days * 24 hours * 60 min * 60 sec).

Ví dụ

<?php
// Setting a cookie
setcookie("username", "Loi Trai Tim", time()+30*24*60*60);
?>

Ghi chú: Tất cả các đối số ngoại trừ tên là tùy chọn. Bạn cũng có thể thay thế một đối số bằng một chuỗi trống ("") để bỏ qua đối số đó, tuy nhiên, để bỏ qua đối số hết hạn, hãy sử dụng số không (0) vì nó là một số nguyên.

***Cảnh báo: Không lưu trữ dữ liệu nhạy cảm trong cookie vì nó có thể bị người dùng độc hại thao túng. Để lưu trữ dữ liệu quan trọng một cách an toàn, hãy sử dụng sessions thay thế.

Truy cập giá trị cookie

$_COOKIE là biến superglobal trong PHP được sử dụng để truy xuất giá trị cookie. Nó thường là một mảng kết hợp chứa danh sách tất cả các giá trị cookie được trình duyệt gửi trong yêu cầu hiện tại, được khóa bằng tên cookie. Giá trị cookie riêng lẻ có thể được truy cập bằng cách sử dụng ký hiệu mảng chuẩn. Ví dụ: để hiển thị cookie tên người dùng đã đặt trong ví dụ trước, bạn có thể sử dụng mã sau.

Ví dụ

<?php
// Accessing an individual cookie value
echo $_COOKIE["username"];
?>

Mã PHP trong ví dụ trên tạo ra kết quả sau:

Loi Trai Tim

Bạn nên kiểm tra xem cookie đã được đặt hay chưa trước khi truy cập vào giá trị của nó. Để làm điều này, bạn có thể sử dụng hàm isset() trong PHP như sau:

Ví dụ

<?php
// Verifying whether a cookie is set or not
if (isset($_COOKIE["username"])) {
    echo "Hi " . $_COOKIE["username"];
} else {
    echo "Welcome!!!";
}
?>

Bạn có thể sử dụng hàm print_r() như print_r($_COOKIE) để xem cấu trúc mảng của $_COOKIE này , giống như bạn làm với các mảng khác.

Xóa cookie

Bạn có thể xóa cookie bằng cách sử dụng hàm setcookie() tương tự với tên cookie và bất kỳ giá trị nào (chẳng hạn như chuỗi trống) tuy nhiên lần này bạn cần đặt ngày hết hạn trong quá khứ, được hiển thị trong ví dụ dưới đây:

Ví dụ

<?php
// Deleting a cookie
setcookie("username", "", time()-3600);
?>

Mẹo: Bạn nên chuyển chính xác cùng một đường dẫn, tên miền và các đối số khác mà bạn đã sử dụng khi tạo cookie lần đầu để đảm bảo rằng cookie chính xác sẽ bị xóa.

 

Bài viết mới cập nhật