2011-08-26 29 views
2

对不起,我的英语,但我会尽力解释我的问题 - 我有一个网站,使用很多子域 当我在主子网站www.site.com场景中添加一些信息该场景内的会议,然后我重定向到subdomain.site.com,这里的会话是空东西非常错误SESSIONS

这是我的cookie设置

$this->Cookie->domain = ".site.com";   
$this->Cookie->key = md5('key');   
$this->Cookie->path = '/'; 

我试图保存文件的会话,而且它没有帮助

Configure::write('Session.save', 'cake'); 

我试过这个ini_set('session.cookie_domain','.site.com'); 但它也没有帮助太

任何想法?

+1

我不认为在会话数据是通过cookie的影响。你为什么要设置Cookie->这样的域名?为什么不只是'site.com'?该子域是否仍然在同一个Cake应用程序下? –

+0

是所有子域的一个应用程序,我将cookie设置为“.site.com”,因为在cakephp的文档中,我发现这个“使用'.yourdomain.com'允许从您的所有子域访问” – sukinsan

+0

都是www和子域使用同样的cakephp应用程序?如果没有,请确保配置中的salt是相同的。 – minaz

回答

1

如果子域中存在下划线(_),则IE在接受Cookie时会出现问题。例如subdomain.tld.com是好的。 sub_domain.tld.com BAD。可能是那个。

+0

在他的领域没有下划线。你什么时候看到那个和哪里? – genesis

+0

几年前我有过这个问题,但在这里提到它。 http://stackoverflow.com/questions/794243/internet-explorer-ignores-cookies-on-some-domains-cannot-read-or-set-cookies – sam

1

当CakePHP的Security.level设置为'high'或'medium'时,CakePHP会将PHP session.referer_check设置为您的站点主机名。

但是,当用户单击电子邮件客户端内的链接时,引用者检查测试失败,会话被标记为无效。

,你所要做的是:

1)设置CakePHP的 'Security.level' 为 '低'

OR

2)提供CakePHP的自定义会话配置,显示here,“session.referer_check”设置为空字符串,这样说:

ini_set('session.referer_check', '');