2011-10-27 63 views
6

有一個網站www.example.com
所有cookie都設置爲www子域。
現在有一個新的子域名,我希望所有子域名都能看到cookies。如何獲取特定cookie的域名?

目標是將所有舊訪問者的www.example.com cookies重寫爲.example.com,或者爲www.example.com重新編寫。

爲此,我想獲取現有cookie的域名。
可能嗎?有這個目的的PHP功能嗎?

+0

您可能會發現['$ cookie-> setDomain($域)'](https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L117 )有幫助,在[這個獨立的庫](https://github.com/delight-im/PHP-Cookie)中找到。雖然您無法訪問已發送(並在客戶端上設置)的cookie的「domain」屬性,但您可以簡單地設置新的cookie。這將工作正常。 – caw

回答

3

我不認爲這個域在讀取​​cookies時可用,這是受瀏覽器限制的。解決辦法是刪除舊的cookie並將其更改爲新的域。

E.g.

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

我有這個想法,但即使所有的cookies都改變了,這種方式也會一直重複。我在服務器端做這件事。另一件事:Google Chrome確實知道cookie域(在檢查元素中) – lvil

+1

您可以添加另一個cookie,讓您知道您已經進行了轉換。 – Noodles

1

如果我的理解正確,您想更改客戶端上當前存在的Cookie的域名?

這是不可能的(*)。

在獲取cookie服務器端時,是否可以查看它是否設置爲www域,請記住從客戶端傳遞的cookie沒有域信息?

(*)在客戶端可能使用JavaScript。