2011-10-27 37 views
6

Có một trang web www.example.com
Tất cả cookie được đặt thành tên miền phụ www.
Bây giờ, có một tên miền phụ mới và tôi muốn cookie được hiển thị cho tất cả các tên miền phụ.Cách lấy tên miền của một cookie cụ thể?

Mục tiêu là viết lại cookie www.example.com cho tất cả khách truy cập cũ thành .example.com hoặc viết mới cho .example.com nếu được đặt cho www.

Đối với điều này, tôi muốn lấy miền của các cookie hiện có.
Có thể không? Có một chức năng php cho mục đích này?

+0

Bạn có thể tìm thấy [ '$ cookie-> setDomain ($ miền)'] (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). Mặc dù bạn không thể truy cập thuộc tính 'miền' của cookie đã được gửi (và đặt trên máy khách), bạn có thể chỉ cần đặt các cookie mới. Điều đó sẽ làm việc tốt. – caw

Trả lời

3

Tôi không nghĩ miền có sẵn khi đọc cookie, điều này bị giới hạn bởi trình duyệt. Một giải pháp sẽ là xóa cookie cũ và thay đổi nó thành tên miền mới.

Ví dụ:

$value = $_COOKIE['TestCookie']; 
setcookie("TestCookie", "", time() - 3600, "www.example.com"); 
setcookie("TestCookie", $value, time + (60 * 60 * 24 * 30), ".example.com"); 
+0

Tôi đã có ý tưởng này, nhưng theo cách này ngay cả sau khi tất cả các cookie đã thay đổi, quá trình này sẽ được lặp lại mãi mãi. Tôi đang làm nó ở phía máy chủ. Và một điều nữa: Google Chrome không biết tên miền cookie (trong phần tử Kiểm tra) – lvil

+1

Bạn có thể thêm cookie khác để cho bạn biết bạn đã thực hiện chuyển đổi. – Noodles

1

Nếu tôi hiểu chính xác bạn muốn thay đổi miền của cookie hiện có trên máy khách?

Điều này là không thể (*).

Khi nhận được phía máy chủ cookie, bạn có thể xem liệu nó có được đặt cho tên miền www hay không, lưu ý rằng cookie được truyền thông qua mẫu máy khách không có thông tin tên miền?

(*) Có thể với JavaScript ở phía máy khách.

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