PHP: COOKIE trong PHP
Cookie là gì?
Cookie thường được sử dụng để nhận diện người dùng. Cookie là một tệp nhỏ mà máy chủ nhúng vào máy tính của người dùng. Mỗi khi cùng một máy tính yêu cầu một trang có trình duyệt, nó cũng sẽ gửi cookie. Với PHP, bạn có thể vừa tạo và lấy các giá trị cookie.
Tạo cookie trong PHP
Để tạo một cookie ta dùng hàm setcookie().
Cú pháp:
setcookie(name, value, expire, path, domain, secure, httponly);
Lưu ý là chỉ tham số name là bắt buộc. Tất cả các tham số khác đều là tùy chọn.
Tạo/Lấy Cookie
Ví dụ sau tạo một cookie có tên "user" với giá trị "Long". Cookie sẽ hết hạn sau 30 ngày (86400 * 30). "/" Có nghĩa là cookie có sẵn trong toàn bộ website (nếu không, hãy chọn thư mục bạn muốn thiết lập).
Sau đó, chúng ta truy xuất giá trị của cookie "user" (sử dụng biến global $ _COOKIE). Chúng ta cũng sử dụng hàm isset()
để kiểm ta xem cookie có được thiết lập hay không:
<!DOCTYPE html> <?php $cookie_name = "user"; $cookie_value = "Long"; 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]; } ?> <p><strong>Note:</strong> You might have to reload the page to see the value of the cookie.</p> </body> </html>
Lưu ý: Hàm
setcookie()
phải đặt TRƯỚC thẻ <html>.
Giá trị của cookie được tự động mã hóa URL khi gửi cookie và tự động được giải mã khi nhận được (để ngăn chặn mã hóa URL, hãy sử dụng hàm setrawcookie()
).
Sửa đổi giá trị cookie
Để sửa đổi cookie, chỉ cần đặt (lại) cookie cũng bằng hàm setcookie()
:
<!DOCTYPE html> <?php $cookie_name = "user"; $cookie_value = "Minh"; 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]; } ?> <p><strong>Lưu ý:</strong> Bạn có thể rload lại trang web để thấy được giá trị cookie mới.</p> </body> </html>
Xóa cookie
Để xóa cookie, ta cũng sử dụng hàm setcookie()
có ngày hết hạn trong quá khứ:
<!DOCTYPE html> <?php // thiết lập ngày hết hạn là 1 tiếng trươc thời điểm hiện tại setcookie("user", "", time() - 3600); ?> <html> <body> <?php echo "Cookie 'user' is deleted."; ?> </body> </html>
Kiểm tra xem Cookie đã được bật chưa
Ví dụ sau 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 cookie thử nghiệm với hàm setcookie()
, sau đó đếm biến mảng $ _COOKIE:
<!DOCTYPE html> <?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>