2011-09-14 88 views
1

我有以下域的設置:如何阻止域名用於子域名?

mydomain.com

www.mydomain.com

有一個問題(在Internet Explorer測試):如果一些cookie設置爲MYDOMAIN .com,這個cookie對www.mydomain.com也是有效的,即使我爲www.mydomain.com設置了一個同名的cookie。

更具體examople:

1)用戶選擇在網站上mydomain.com自己喜歡的語言和我設置cookie usrlng = EN

2)第二天別人使用同一臺計算機,naviagtes到www.mydomain.com並選擇他的語言,並設置usrlng = de。但Internet Explorer不斷髮送cookies和usrlng = en和usrlng = de到服務器(我在Fiddler中看到過)!爲什麼它發送同一個cookie兩次,而不是覆蓋子域值'usrlng'?

同時我看到PHPSESSID被正確覆蓋了子域,沒有兩個PHPSESSID cookie被髮送到服務器。

如何修復usrlng cookie並使其與PHPSESSID的工作方式相同?

回答

1

現在我通過設置cookie的'host'而不是'domain'來解決問題; 「主機」屬性允許將cookie限制爲mydomain.com或www.mydomain.com。

也許這是唯一的辦法,'域'不能建立到頂級域名cookie過度。

2

您也可以爲每個...設置不同的save_path,以便它們不共享會話。 PHP示例:

$subdomain = array_shift(explode('.',$_SERVER['HTTP_HOST'])); 

ini_set('session.save_path','D:\website_sessions\'.$subdomain.'\'); 

ini_set('session.save_path','D:\website_sessions\'.$subdomain.'\'); 

PHP需要訪問在會話目錄中寫入。