Trong bài học này, mình sẽ hướng dẫn bạn sẽ tìm hiểu làm thế nào để sử dụng cookies trong PHP lưu trữ một số thông tin trong trình duyệt của người dùng.
1. Cookie là gì?
Một cookie là một tập tin văn bản cho phép bạn lưu trữ một ít dữ liệu (gần 4KB) trên máy tính của người dùng.
Các lập trình viên thường dùng cookies để theo dõi các thông tin như tên người dùng … để có thể cá nhân hóa lượt truy cập của họ trong các lần tiếp theo.
Note: Mỗi lần trình duyệt gửi request đến máy chủ, tất cả dữ liệu trong cookie cũng sẽ tự động được gửi đến máy chủ.
2. Hướng dẫn thiết lập Cookie trong PHP
Hàm setcookie() được sử dụng để thiết lập cookie trong PHP.
Cần phải đảm bảo bạn đã gọi hàm setcookie() trước khi bất kỳ output nào được tạo nếu không cookie sẽ không được thiết lập.
Cú pháp để thiết lập Cookie như sau:
setcookie(name, value, expire, path, domain, secure);
Các tham số của hàm setcookie() có các ý nghĩa sau:
- name: Tên của cookie
- value: Giá trị của cookie. Lưu ý, 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ó hiệu lực. Nếu được đặt thành /, cookie sẽ có sẵn trong toàn bộ domain.
- domain: Chỉ định tên miền mà cookie có hiệu lực, ví dụ: www.laptrinhvienphp.com
- sercure: Trường này, nếu có, chỉ ra rằng cookie chỉ được gửi nếu có kết nối HTTPS
Note: 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 (section), tức là cho đến khi trình duyệt đóng lại.
Dưới đây là một ví dụ sử dụng hàm setcookie() để tạo cookie có username và gán giá trị giá trị Em Vi cho nó. Và xác định rằng cookie sẽ hết hạn sau 30 ngày (30 ngày * 24 giờ * 60 phút * 60 giây).
<?php
// Setting a cookie
setcookie("username", "Em Vi", time()+30*24*60*60);
?>
Note: Tất cả những tham số ngoại trừ username đều là tùy chọn. Bạn cũng có thể thay thế một tham số với một chuỗi rỗng (”) để bỏ qua nó, tuy nhiên để bỏ qua expires thì nên sử dụng số 0, vì kiểu của 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ó khả năng bị người dùng “không trong sáng” thao túng. Hãy lưu trữ dữ liệu nhạy cảm một cách an toàn sử dụng section để thay thế.
3. Hướng dẫn truy cập giá trị của Cookie.
Biến superglobal PHP $ _COOKIE được sử dụng để truy xuất giá trị của cookie. Nó thường là một mảng kết hợp có chứa một danh sách tất cả các giá trị cookie được trình duyệt gửi, nó đượ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 tiêu 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 đoạn mã sau đây.
<?php
// Truy cập một giá trị Cookie riêng lẻ
echo $_COOKIE["username"];
?>
Chúng ta nhận được kết của của ví dụ trên như sau:
Em Vi
Đấy là một cách làm tốt để kiểm tra xem cookie có được thiết lập hay không trước khi truy cập giá trị của nó. Để làm điều này, bạn có thể sử dụng hàm PHP isset(), như thế này:
<?php
// Các xác minh xem Cookie có được thiết lập hay không
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 kết hợp $ _COOKIE này, nó giống như cách bạn với các mảng khác thôi.
4. Hướng dẫn Xóa Cookie trong PHP
Bạn có thể xóa cookie bằng cách gọi cùng hàm setcookie() với tên cookie và bất kỳ giá trị nào (chẳng hạn như chuỗi rỗng), tuy nhiên lần này bạn cần đặt ngày hết hạn trong quá khứ, như trong ví dụ dưới đây:
<?php
// Xóa Cookie
setcookie("username", "", time()-3600);
?>
Note: Bạn nên truyề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 lần đầu tiên tạo cookie để đảm bảo rằng cookie bị xóa chính xác.
Tổng kết
Như vậy là qua bài này bạn đã được giới thiệu về Cookie trong PHP, cách thiết lập Cookie, Cách truy cập giá trị của Cookie và cả cách xóa Cookie.
Chúng ta sẽ thường xuyên sử dụng cookie để cá nhân hóa trình duyệt ví dụ theo tài khoản của người dùng, theo email họ đăng nhập…