Tôi có một cookie mà tôi sử dụng trên ứng dụng của mình. Có vẻ như sau:Cookie PHP viết trên miền không chính xác
+-------+-------+-----------------------+-------+----------+
| Name | Value | Domain | Path | Expires |
+-------+-------+-----------------------+-------+----------+
| foo | bar | my.domain.tld |/ | Session |
+-------+-------+-----------------------+-------+----------+
Trong phần của tập lệnh, dựa trên một số điều kiện, tôi đang cố gắng thay đổi giá trị của cookie. Tôi đang sử dụng mã này:
// overwrite cookie
if($condition){
setcookie("foo", "cat", 0, "/", "my.domain.tld");
}
Sau đó, dữ liệu cookie của tôi trông như thế này:
+-------+-------+-----------------------+-------+----------+
| Name | Value | Domain | Path | Expires |
+-------+-------+-----------------------+-------+----------+
| foo | bar | my.domain.tld |/ | Session |
| foo | cat | .my.domain.tld |/ | Session |
+-------+-------+-----------------------+-------+----------+
Tại sao một .
đang được thêm vào phía trước tên miền? Tôi muốn ghi đè lên cookie hiện có.
không có ý nghĩa, nó * phải * được đặt thành anything.domain.tld nếu không có lỗi lớn ở đâu đó - điều duy nhất tôi dám đề xuất, là bạn kiểm tra lại và đảm bảo rằng cookie đầu tiên không có trong thực tế thiết lập để .anything chứ không phải là thứ hai .. – nathan
Nathan, có vẻ như nó không phải là một lỗi rất nhiều vì nó có thể là một nguồn phổ biến cho sự nhầm lẫn. Xem câu trả lời dưới đây :) –
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). Nó sẽ chăm sóc bình thường hóa tên miền mà bạn cung cấp. – caw