Cookies trong PHP
Trong hướng dẫn này, bạn 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 văn bản nhỏ cho phép bạn 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 trong cookie sẽ tự động được gửi đến máy chủ trong yêu cầu đó.
Đặt Cookie trong PHP
Hàm setcookie()
được sử dụng để thiết lập một cookie trong PHP. Đảm bảo rằng 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ơ bản của hàm này như sau:
Các tham số của hàm setcookie()
có ý nghĩa 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ị Tam Nguyen 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", "Tam Nguyen", 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 nhạy cảm 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 được đặ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.
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 Guest!";
}
?>
Bạn có thể sử dụng hàm print_r()
như print_r($_COOKIE);
để xem cấu trúc của mảng liên kết $_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 gọi 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ứ, như đượ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.