2010-08-11 19 views
0

我需要在不同的子域中使用相同的會話。在不同子域中使用會話的問題

首先,我把

php_value session.cookie_domain ".aaaa.com" 

在.htaccess文件並上傳到根路徑。

當我需要使用會話。我只是打電話

session_start(); 

有時它有效,但有時它不。

我測試了這一點,發現。

  1. 如果我第一次去登錄頁面,然後登錄並轉到子域頁面。有用!

  2. 如果我轉到子域頁面,點擊登錄頁面,然後通過javascript返回到子域頁面window.location ='http://sub.aaaa.com';這是行不通的!!

  3. 如果我使用同一個帳戶登錄2個網頁瀏覽器,它不起作用!

還有別的辦法嗎?或者我該如何解決這個問題。我希望我的網站使用單一登錄。

+0

就像感興趣的問題一樣,在您的.htaccess文件中,嘗試將php_value session.cookie_domain「.aaaa.com」替換爲php_value session.cookie_domain「* .aaaa.com」 – SimonDowdles 2010-08-11 12:54:14

+0

您是否也已將hta​​ccess放入您的子域中? – Codler 2010-08-11 12:54:33

回答

0
  1. 確保您的session_start()頁面使用的是會議,其中包括一些可能不是對用戶可見。

  2. 如果您使用兩個Web瀏覽器,會話是相互獨立的,這是設計。

+0

並確保session_start();在您可能擁有的任何其他PHP代碼之前。 – SimonDowdles 2010-08-11 13:09:43

0

要調試#2的問題,使用HTTP監視器如HTTPFox查看來/從服務器登錄並瀏覽周圍的頭,確保該cookie與正確的被正確設定域和路徑限制。

問題3:我不知道你在做什麼。您是否使用兩個獨立的瀏覽器(比如說Firefox和Chrome?),或者您的意思是您使用同一瀏覽器的兩個窗口/選項卡?首先,兩個不同的瀏覽器不會共享cookie,因此您不能在它們之間共享單個會話,而無需在它們之間手動傳輸cookie。

對於同一瀏覽器的兩個不同的選項卡/窗口,這種實現取決於您的登錄邏輯。如果登錄腳本無條件地啓動一個新會話,那麼您的第二次登錄嘗試將從首次登錄時獲得完全獨立的會話,並且很可能會覆蓋第一次登錄的cookie。