Biến siêu toàn cục $_COOKIE trong PHP lưu trữ các biến được truyền đến kịch bản PHP hiện tại cùng với yêu cầu HTTP dưới dạng cookie. $HTTP_COOKIE_VARS cũng chứa thông tin tương tự, nhưng nó không phải là một biến siêu toàn cục và hiện đã bị loại bỏ.
Cookies là các tệp văn bản được lưu trữ bởi máy chủ trên máy tính của khách hàng và chúng được giữ lại với mục đích theo dõi. PHP hỗ trợ cookie HTTP một cách minh bạch. Cookies thường được thiết lập trong tiêu đề HTTP. JavaScript cũng có thể thiết lập một cookie trực tiếp trên trình duyệt.
Kịch bản máy chủ gửi một tập hợp các cookie đến trình duyệt. Nó lưu trữ thông tin này trên máy cục bộ để sử dụng trong tương lai. Lần tiếp theo, khi trình duyệt gửi bất kỳ yêu cầu nào đến máy chủ web, nó sẽ gửi thông tin cookie đó đến máy chủ và máy chủ sử dụng thông tin đó để xác định người dùng.
PHP cung cấp hàm setcookie để tạo một đối tượng cookie được gửi đến khách hàng cùng với phản hồi HTTP.
setcookie(name, value, expire, path, domain, security);
Name − Tên của cookie được lưu trữ.
Value − Điều này thiết lập giá trị của biến đã đặt tên.
Expiry − Điều này chỉ định một thời gian trong tương lai tính bằng giây kể từ 00:00:00 GMT vào ngày 1 tháng 1 năm 1970.
Path − Thư mục mà cookie có hiệu lực.
Domain − Xác định tên miền trong các miền rất lớn.
Security − 1 cho HTTPS. Mặc định là 0 cho HTTP thông thường.
Hãy xem xét example sau đây. Kịch bản này thiết lập một cookie có tên là username nếu nó chưa được thiết lập.
<?php if (isset($_COOKIE['username'])) { echo "<h2>Cookie username already set: " . $_COOKIE['username'] . "</h2>"; } else { setcookie("username", "Mohan Kumar"); echo "<h2>Cookie username is now set.</h2>"; } ?>
Chạy kịch bản này từ thư mục gốc của máy chủ Apache. Bạn sẽ thấy thông điệp này là output −
Cookie username is now set
Nếu kịch bản này được thực thi lại, cookie hiện đã được thiết lập.
Cookie username already set: Mohan Kumar
Để lấy cookie trong các lần truy cập tiếp theo của khách hàng −
<?php $arr=$_COOKIE; foreach ($arr as $key=>$val); echo "<h2>$key => $val </h2>"; ?>
Trình duyệt sẽ hiển thị output −
Username => Mohan Kumar
Để xóa một cookie, hãy thiết lập cookie với ngày đã hết hạn, để trình duyệt kích hoạt cơ chế xóa cookie.
<?php setcookie("username", "", time() - 3600); echo "<h2>Cookie username is now removed</h2>"; ?>
Trình duyệt bây giờ sẽ hiển thị output −
Cookie username is now removed
Bạn cũng có thể thiết lập cookie dạng mảng bằng cách sử dụng cú pháp mảng trong tên cookie.
setcookie("user[three]", "Guest"); setcookie("user[two]", "user"); setcookie("user[one]", "admin");
Nếu tên cookie chứa dấu chấm (.), thì PHP sẽ thay thế chúng bằng dấu gạch dưới (_).