Tạo Sao Hàm "setcookie()" Tạo Được Cookie Trên Trình Duyệt Trong Khi Code PHP Chạy Trên Server?

Các bác cho em hỏi ngu xíu, lúc đọc về PHP trên W3School thì em thấy có hàm setcookie() dùng để tạo cookie trên trình duyệt:

Cú pháp:

<?php
setcookie(name, value, expire, path, domain, secure, httponly);
?>

Code tạo cookie:

<?php
$cookie_name = "username";
$cookie_value = "John Doe";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
?>

Nhưng theo em được dạy ở trườn thì cookie được tạo và sử dụng bởi trình duyệt trong khi đó setcookie() là hàm PHP chạy trên server và server trả về HTML cho phía client, vậy làm sao mà hàm setcookie() có thể tạo mới cookie được ạ?

Rất mong nhận được sự giúp đỡ của các bác em đã Google hơn nửa ngày rồi mà vẫn chưa tìm ra câu trả lời.

1 Answer(s)

Nam Nguyễn Nam Nguyễn

Để tạo cookie cho trình duyệt thì bạn có thể sử dụng JavaScript hoặc sử dụng response header.

Khi gọi hàm setcookie() thì trước khi trả về response cho client thì PHP sẽ thêm vào response header một trong các trường sau đây (sử dụng cái nào thì còn tuỳ vào code bạn gọi hàm này sử dụng bao nhiêu đối số):

Set-Cookie: <cookie-name>=<cookie-value> 
Set-Cookie: <cookie-name>=<cookie-value>; Expires=<date>
Set-Cookie: <cookie-name>=<cookie-value>; Max-Age=<non-zero-digit>
Set-Cookie: <cookie-name>=<cookie-value>; Domain=<domain-value>
Set-Cookie: <cookie-name>=<cookie-value>; Path=<path-value>
Set-Cookie: <cookie-name>=<cookie-value>; Secure
Set-Cookie: <cookie-name>=<cookie-value>; HttpOnly

Bạn có thể kiểm tra thông tin của response header trả về từ server cho một request thông qua công cụ Developer Tools của trình duyệt. Trên trình duyệt mở tool này lên => sau đó thực hiện gửi một request tới server => click vào tab Network => click chọn một request và xem thông tin trong tap Headers ở bên trái:

Kiểm Tra Response Header Sử Dụng Developer Tools của Chrome

Tóm lại câu trả lời cho câu hỏi của bạn ở đây đó là hàm setcookie() của PHP tạo cookie cho trình duyệt sử dụng HTTP response header.

Content must be at least 100 characters

Related Discussion