提前感谢。
我在本地安装了Xampp。我的网站设置如下。我有我的主域,即"域"安装目录:C:'xampp'htdocs'domain
在这里面,我有一个子域设置,即"subdomain.domain
"安装目录:C:'xampp'htdocs'domain'subdomain
这样做的目的是在主域站点上进行单次登录,并能够在用户访问子域站点时访问相同的会话数据(因此,在用户登录域门户网站后不必重新验证用户)。
我在我的域index.php中创建会话,如下所示:
session_set_cookie_params(0, '/', '.3pccap');
session_name('mysessionname');
session_start();
子域index.php
session_name('mysessionname');
session_start();
我添加了一个var_dump($_SESSION
);在每个index.php页面上,确认哪些会话数据可用。一旦我登录到我的主域,会话就会填充用户数据。然后,我导航到我的子域站点,该站点还运行会话变量的var_dump。变量显示为空数组。
我已经尝试在php.ini文件中设置会话cookie域,行为没有改变。
如有任何协助,不胜感激。
您需要使会话cookie对您的子域可见(因此,在、您的域和子域上调用session_set_cookie
):
session_set_cookie_params (0, '/', '.domain.com');
session_name('mysessionname');
session_start();
EDIT(来自评论,解决了问题)
域主机名应该由两部分组成(即使是本地开发),例如domain.local而不是域
当设置COOKIES时,有一个参数允许您指定PATH和DOMAIN,如果您将DOMAIN设置为"DOMAIN.com"并将PATH设置为"/",这将使COOKIE在所有子域中可用,一些旧浏览器要求DOMAIN使用前导点(.)".DOMAIN.com"…
签出此页面上的params,session_set_cookie_params也有DOMAIN和PATH参数