2012-11-16 60 views
0

所以我設置了一個完美的登錄/會話系統。但是,在最近幾天內,這些會議無法進入子域。PHP會話在子域上失敗

我一直在用session_start撥打以上以下內容:

session_set_cookie_params(0, '/', '.domain.com'); 

同樣,這工作得很好。您可以在基本域中登錄,然後移至子域,並且會話結束。或者你可以登錄一個子域名並轉移到其他域名。例如:

  • 登錄在domain.com工作
  • 移動到subdomain.domain.com不
  • 移動到domain.com/subdomain工作

沒有發生任何變化都進行了到這個腳本。它只是失敗。也許主持人負責?

編輯: 即使您登錄子域,PHP會話創建,但不起作用。儘管您可以在瀏覽器的Cookie中看到PHP會話,但沒有$ _SESSION數組數據可用。

回答

0

修正了它。看起來我在PHP.ini中的session.save_path被設置爲/ tmp,無論出於何種原因,它都不會讓我的子域工作或訪問會話文件。

我將PHP.ini更改爲html層次結構中的新文件夾,並且它工作正常。

仍在使用session_set_cookie_params(0,'/','.domain.com');和我以前的所有設置。所以我的代碼很好,不知何故保存路徑停止工作。很奇怪。

0

嘗試使用的ini_set()功能,如:

ini_set('session.cookie_domain', 
substr($_SERVER['SERVER_NAME'], strpos($_SERVER['SERVER_NAME'],"."),100)); 

,或者嘗試使用的.htaccess

php_value session.cookie_domain .domain.com 

,或者嘗試安全PARAM設置爲false,像

session_set_cookie_params(0, '/', '.domain.com', false, false); 
+0

這是行不通的。我實際上在使用之前嘗試過... session_set_cookie_params(0,'/','.coaguco.com'); 但它沒有工作。上面的session_set_cookie_params工作了很多個月,就像我在原文中提到的那樣。它可以在基本域或子域作爲文件夾正常工作,即。 domain.com/subdomain,但不是直接在子域上,即。 subdomain.domain.com – Gramps

+0

你可以嘗試使用htaccess,如上面張貼.. –

+0

這只是導致500錯誤。但這對於PHP會話本身並不是一個問題。 – Gramps