2012-01-11 53 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也有域名和路徑參數