2012-01-11 86 views
1

在此先感谢。访问域/子域之间的会话。本地xampp安装

我有本地安装Xampp。我的网站设置如下。我有我的主要领域,即“域” installatiopn目录: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域,行为没有变化。

任何协助是最感谢。

+0

* Set-Cookie *指令是怎样的? – Gumbo 2012-01-11 11:03:06

+0

是的,我已经检查了以下目录:C:\ xampp \ tmp并且在登录到域网站时创建一个新的cookie。 当我访问子域网站时,也会创建一个单独的cookie。我不想发生。我对饼干的了解虽然很差,但有点失落。 – Trevelyan005 2012-01-11 11:05:28

+0

在我的php.ini中设置cookie指令? – Trevelyan005 2012-01-11 11:06:45

回答

2

你需要让会话cookie可见为您的子域名(因此,调用session_set_cookie,您的域名和您的子域):

session_set_cookie_params (0, '/', '.domain.com'); 
session_name('mysessionname'); 
session_start(); 

编辑(从意见,解决问题)

域主机名应该由两个部分组成(甚至是地方发展),例如domain.local而不是域

+0

我已经修改了我的页面,因此域和子域都调用session_set_cookie_params(0,'/','.domain.com'); session_name('mysessionname'); session_start(); 设置会话时。我仍然在我的子域中接收到一个空的会话数组。 – Trevelyan005 2012-01-11 11:12:14

+0

他们是否将会话数据保存到相同的路径(例如,检查'phpinfo()')? – konsolenfreddy 2012-01-11 11:14:36

+0

phpinfo()session.save_path = C:\ xampp \ tmp我的域名和子域名。 – Trevelyan005 2012-01-11 11:20:26

0

在cookie设置,有一个参数,它允许您指定路径和域名,如果设置了域“domain.com”,路径为“/”这将使COOKIE可用翻过所有子,一些老的浏览器需要使用前导点的域(。)“.domain.com” ......

Checkout the params on this page,session_set_cookie_params也有域名和路径参数