2011-12-27 44 views
5

Tôi muốn đặt cookie qua PHP. Kịch bản là như thế này:Cách đặt Cookie trong PHP cho miền

Tên miền là: example.com

Có một trang web trên tên miền phụ (my.example.com). Mã của tôi là:

$value="I am looged in"; 
setcookie("TestCookie", $value,'','',".example.com"); 
echo "hello".$_COOKIE["TestCookie"]; 

nhưng kết quả chỉ là "xin chào" - cookie chưa được đặt. Vui lòng đề xuất giải pháp có thể.

Cảm ơn!

+0

hoạt động khi sử dụng: setcookie ("TestCookie", $ value); – Yogesh

+0

Để quản lý cookie dễ dàng hơn, đặc biệt là đối với thuộc tính "miền", bạn có thể sử dụng quyền này: https://github.com/delight-im/PHP-Cookie – caw

+0

Bạn có thể tìm thấy ['$ cookie-> setDomain ($ domain) '] (https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L117) hữu ích, như được tìm thấy trong [thư viện độc lập này] (https://github.com)/delight-im/PHP-Cookie). – caw

Trả lời

9

Hai lần sửa đổi đầu tiên cho cuộc gọi thực tế là setcookie: Tham số 3 (expired) phải là giá trị số nguyên (giá trị mặc định là 0); thông số bốn phải được đặt thành '/' để làm cho cookie hợp lệ cho tất cả các thư mục con; cuộc gọi setcookie do đó sẽ trông như sau:

setcookie("TestCookie", $value, 0, '/', ".example.com"); 

Sau đó, nó thực sự sẽ hoạt động lần thứ hai tập lệnh được gọi. Để hiểu lý do tại sao nó không hoạt động lần đầu tiên, chúng ta phải đào một chút into how cookies work; về cơ bản, Cookies là dữ liệu được gửi từ máy chủ đến máy khách, trong đó máy chủ nói "gửi cho tôi dữ liệu này lần sau khi bạn gửi cho tôi yêu cầu". Đó là cơ bản những gì setcookie là cho: Khi yêu cầu được thực hiện và khách hàng đã nhận và xử lý trang, cookie theo quy định sẽ được tạo ra tại khách hàng; Mặt khác, $_COOKIE giữ tất cả các giá trị mà có trong cookie là và đã được khách hàng truyền cùng với yêu cầu - có nghĩa là lần đầu tiên tập lệnh được gọi, $ _SESSION thực sự sẽ trống, vì các cookie sẽ chỉ được tạo khi khách hàng đã nhận được đầu ra của tập lệnh.

+0

Cảm ơn bạn rất nhiều vì đã giải thích mọi thứ! Điều này làm việc cho tôi. – Yogesh

Các vấn đề liên quan