Cookie trong PHP

Cookie trong PHP
Cookie trong PHP

Cookie trong PHP là gì?

Cookie trong PHP là một biến toàn cục được sử dụng trên toàn bộ trang web khi được khởi tạo, Cookie được tạo sẽ được lưu trữ trên máy tính của máy khách, thời gian tồn tại tùy theo thời gian khi bạn khởi tạo.

Khởi tạo và sử dụng Cookie trong PHP

Khởi tạo Cookie trong PHP

Vì cookie này nó lưu kỹ nên phải tải lại trang web thì cookie mới cập nhật lại được:

setcookie("tên_cookie", "giá_trị_cookie",thời_gian_hết_cookie, "đường_dẫn_có_hiệu_lực");

tên_cookie: Tên Cookie

giá_trị_cookie: Giá trị Cookie

thời_gian_hết_cookie: Thời gian hết cookie.

đường_dẫn_có_hiệu_lực: Đường dẫn có hiệu lực trên máy chủ, hãy dùng / để có hiệu lực toàn website.

<?php
// 86400 = 60*60*24 (1 ngày)
//time() thời gian hiện tại
$thoigian = time() + 86400 * 30; // 30 Ngày

// Tạo Cookie username có giá trị Bùi Tấn Lực, tồn tại 30 ngày
setcookie("username", "Bùi Tấn Lực", $thoigian, "/");

echo $_COOKIE["username"];
?>

Kết quả:

Bùi Tấn Lực

Chạy Thử

Sửa đổi giá trị cookie trong PHP

Vì cookie này nó lưu kỹ nên phải tải lại trang web thì cookie mới cập nhật lại được:

<?php
// 86400 = 60*60*24 (1 ngày)
//time() thời gian hiện tại
$thoigian = time() + 86400 * 30; // 30 Ngày

// Tạo Cookie username có giá trị Bùi Tấn Lực, tồn tại 30 ngày
setcookie("username", "Bùi Tấn Lực", $thoigian, "/");

// Hủy cookie username trước, quy định thời gian trước hiện tại
setcookie("username", "Bùi Tấn Lực", time() - (60* 60));

// Cập nhật lại giá trị cho cookie username
setcookie("username", "Trần Thị Vân", $thoigian, "/");

echo $_COOKIE["username"];
?>

Kết quả sau khi cập nhật:

Trần Thị Vân

Chạy Thử

Xóa cookie trong PHP

Vì cookie này nó lưu kỹ nên phải tải lại trang web thì cookie mới cập nhật lại được:

<?php
// 86400 = 60*60*24 (1 ngày)
//time() thời gian hiện tại
$thoigian = time() + 86400 * 30; // 30 Ngày

// Tạo Cookie username có giá trị Bùi Tấn Lực, tồn tại 30 ngày
setcookie("username", "Bùi Tấn Lực", $thoigian, "/");

// Hủy cookie username trước, quy định thời gian trước hiện tại
setcookie("username", "Bùi Tấn Lực", time() - (60* 60));

// In ra Cookie username vừa xóa
echo $_COOKIE["username"];
?>

Chạy Thử

Kiểm tra các cookie PHP đang chạy

Vì cookie này nó lưu kỹ nên phải tải lại trang web thì cookie mới cập nhật lại được:

<?php
// 86400 = 60*60*24 (1 ngày)
//time() thời gian hiện tại
$thoigian = time() + 86400 * 30; // 30 Ngày

// Tạo Cookie username có giá trị Bùi Tấn Lực, tồn tại 30 ngày
setcookie("username", "Bùi Tấn Lực", $thoigian, "/");

// In ra Cookie username vừa tạo
echo $_COOKIE["username"];
echo "<br>";

// In ra các cookie đang bật, vào đếm đang có bao nhiêu cookie đang chạy 
if(count($_COOKIE)>0){

echo "Có ".count($_COOKIE)." cookie đang được bật <br>";

print_r($_COOKIE);

}else{
echo "Cookie chưa được bật";
}
?>

Kết quả:

Bùi Tấn Lực
Có 11 cookie đang được bật
Array ( [_ga] => GA1.1.1598114736.1728516216 [__gads] => ID=b9e63eab9b820601:T=1754725437:RT=1754725437:S=ALNI_MafY7BM9YAVABQ1NnaYWVn87uGoRw [__gpi] => UID=0000117d3939768a:T=1754725437:RT=1754725437:S=ALNI_MbcBtwWomg0ske1VBMPyMFdmpK-YA [__eoi] => ID=f3c70b222de11fe0:T=1754725437:RT=1754725437:S=AA-Afjarxurr2CS3PWk4zHWYdOdO [_ga_24EL5B93N8] => GS2.1.s1754725435$o1$g1$t1754725895$j60$l0$h0 [_ga_DXMSLLTSEM] => GS2.1.s1754725435$o1$g1$t1754725895$j60$l0$h0 [_ga_Z9XHN6YCL9] => deleted [PHPSESSID] => mdmi62tkk6oqjs4bh5v2jme986 [username1] => Bùi Tấn Lực [username2] => Bùi Tấn Lực [username] => Bùi Tấn Lực )

Chạy Thử

Các thuộc tính Cookie cần biết trong PHP

Cookie không chỉ có giá trị và thời gian hết hạn. Khi tạo Cookie trong PHP, bạn còn có thể thiết lập phạm vi hoạt động và các tùy chọn bảo vệ dữ liệu. Hiểu đúng những thuộc tính này giúp Cookie hoạt động phù hợp với website và hạn chế các rủi ro không cần thiết.

Thiết lập thời gian và phạm vi hoạt động của Cookie

Ngoài thời gian tồn tại, Cookie có thể được giới hạn theo đường dẫn hoặc tên miền. Thuộc tính Path xác định những đường dẫn nào trên website được phép sử dụng Cookie, còn Domain có thể mở rộng phạm vi Cookie cho một tên miền hoặc các tên miền phụ phù hợp.

Việc giới hạn phạm vi giúp tránh để Cookie xuất hiện ở những khu vực không cần thiết. Với các Cookie chỉ phục vụ một chức năng cụ thể, nên đặt phạm vi càng phù hợp càng tốt thay vì áp dụng cho toàn bộ website.

Bảo vệ Cookie với HttpOnly và Secure

Thuộc tính HttpOnly ngăn JavaScript phía trình duyệt đọc Cookie. Đây là lựa chọn hữu ích đối với những Cookie chứa thông tin phiên đăng nhập hoặc dữ liệu không cần truy cập trực tiếp từ JavaScript.

Thuộc tính Secure yêu cầu trình duyệt chỉ gửi Cookie thông qua kết nối HTTPS. Khi website đã sử dụng HTTPS, nên bật tùy chọn này cho những Cookie có dữ liệu cần bảo vệ.

Ví dụ tạo Cookie có thời hạn, giới hạn đường dẫn và bật các tùy chọn bảo vệ:

<?php
setcookie(
    'user_token',
    'abc123',
    [
        'expires' => time() + 3600,
        'path' => '/',
        'secure' => true,
        'httponly' => true
    ]
);
?>

Kiểm soát Cookie bằng SameSite

SameSite kiểm soát cách trình duyệt gửi Cookie khi có yêu cầu phát sinh từ một website khác. Tùy nhu cầu, có thể sử dụng Lax, Strict hoặc None.

  • Lax: phù hợp với nhiều website thông thường và cân bằng giữa khả năng sử dụng và bảo vệ Cookie.
  • Strict: hạn chế Cookie được gửi trong các ngữ cảnh từ website khác, phù hợp khi cần kiểm soát chặt hơn.
  • None: cho phép Cookie được sử dụng trong ngữ cảnh cross-site nhưng thường phải đi kèm Secure.

Không nên chọn None chỉ vì muốn Cookie hoạt động rộng hơn. Hãy xác định website có thực sự cần giao tiếp cross-site hay không, sau đó chọn chính sách phù hợp với chức năng đang xây dựng.

<?php
setcookie(
    'user_token',
    'abc123',
    [
        'expires' => time() + 3600,
        'path' => '/',
        'secure' => true,
        'httponly' => true,
        'samesite' => 'Lax'
    ]
);
?>

Lời kết

Cảm ơn các bạn đã tham khảo bài viết Cookie trong PHP.

  • 0 Bình luận
Trần Thị Vân | Content Creator Web Mới
Trần Thị Vân
Trần Thị Vân là Content Creator tại Web Mới, phụ trách nghiên cứu, biên soạn nội dung và chia sẻ kiến thức về website, SEO, lập trình cùng các xu hướng công nghệ
Đánh giá
Chia sẻ nội dung đánh giá của bạn về Cookie trong PHP
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *
Đánh giá của bạn
Tên *
Email
Số điện thoại *
Bình luận, Hỏi đáp
Yêu Cầu Báo Giá
Gửi trang web mẫu cần làm theo, chúng tôi sẽ báo giá đến bạn từ Email (tanlucit09@gmail.com - Bùi Tấn Lực) hoặc Zalo (Lực IT - 0398259259) !