2014-02-27 86 views
0

我有兩個相同名稱的cookie - 一個在我的根域,一個在子域上。默認情況下,如果您位於匹配的子域中,PHP將讀取子域cookie並忽略根cookie。如果有一個匹配的子域cookie,我將如何閱讀根域cookie?如何在當前子域名具有相同名稱的cookie時訪問根域上設置的cookie?

例如,可以說我有這兩種餅乾:

Name | Value | Domain 
uid | 12345 | .example.com 
uid | abcde | app.example.com 

如果我在app.example.com,PHP將只顯示我這個$_COOKIE全局陣列中:

array("uid" => "abcde"); 

不過,我希望能夠訪問此:

array("uid" => "12345"); 

這可能嗎?

我使用session_set_cookie_params這樣的嘗試:

session_set_cookie_params(0, "/", ".example.com"); 
session_start(); 
echo "<pre>"; print_r($_COOKIE["uid"]); echo "</pre>"; 

但它仍然會返回:

array("uid" => "abcde"); 

編輯:

的餅乾被設定爲以下代碼:

setcookie("uid", "12345", 0, "/", "example.com"); 
setcookie("uid", "abcde", 0, "/", "app.example.com"); 
+0

對於會話,http://stackoverflow.com/questions/644920/allow-php-sessions-to-carry-over-to-subdomains其他的cookie,你需要指定域像你正在做的,但使用setCookie方法。 –

+0

據我所知,瀏覽器只發送其中一個cookie,所以PHP甚至不知道另一個。瀏覽器基本上檢查是否沒有具有相同名稱的cookie。如果有的話,它會發送具有最適合該域的特定域值的域(比如app.example.com它「'app.example.com」'比'「.example.com」更具體反過來會比'「example.com」'更具體)' – Tularis

+0

@JonathanKuhn - 指定域沒有做任何事情......如果您在該子域中,它總是會顯示來自子域的cookie。 –

回答

0

如果您在可供其他子域訪問的根域中創建cookie,並且您不對此子域使用此cookie,則建議您重命名該子域的cookie。