2011-09-14 54 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需要访问在会话目录中写入。