我正在尝试设置以下内容:
auth.example.com
sub1.example.com
sub2.example.com
如果用户访问sub1.example.com
或sub2.example.com
,而他们没有登录,他们会被重定向到auth.example.com
并可以登录。
sub1.example.com
和sub2.example.com
是两个独立的应用程序,但使用相同的凭据。
我尝试在我的php.ini中设置以下内容:
session.cookie_domain = ".example.com"
但它似乎没有将信息从一个域传递到另一个域。
编辑
我尝试了以下几种方法:
sub1.example.com/test.php
session_set_cookie_params(0, '/', '.example.com');
session_start();
print session_id() . "<br>";
$_SESSION['Regsitered'] = 1;
echo '<a href="http://auth.example.com/test.php">Change Sites</a>'
auth.example.com/test.php
session_set_cookie_params(0, '/', '.example.com');
session_start();
print session_id() . "<br>";
$_SESSION['Checked'] = 1;
print_r($_SESSION);
会话it是完全相同的,但是当我转储$_SESSION
变量时,它不会显示两个密钥,而只是显示我在每个域下设置的任何密钥。
发布于 2009-09-22 00:35:38
我不知道这个问题是否仍然存在,但我刚刚遇到了同样的问题,并在调用session_set_cookie_params()
之前设置了一个会话名称来解决它
$some_name = session_name("some_name");
session_set_cookie_params(0, '/', '.example.com');
session_start();
我在php.ini
中没有做任何更改,但现在一切正常。
发布于 2011-06-25 20:49:13
有一件事可以神秘地阻止会话数据在子域上被读取,尽管cookies被正确地设置为.example.com
,这就是PHP Suhosin补丁。根据问题中的示例,您可以正确配置所有内容,但它可能无法正常工作。
关闭以下Suhosin会话设置,即可恢复业务:
suhosin.session.cryptua = Off
suhosin.session.cryptdocroot = Off
发布于 2009-06-30 15:17:16
尝试使用:
session.cookie_domain = "example.com"
而不是:
session.cookie_domain = ".example.com"
请注意开头缺少的句号。
但是要小心使用它,因为并不是所有浏览器都支持它。
https://stackoverflow.com/questions/1064243
复制相似问题