2012-02-19 89 views
0

有誰知道如何在子域之間保持會話?

我可以使用兩個不同的子域訪問特定的cookie,但問題仍然存在......當我嘗試向其他子域發送$ _SESSION ['test']時,它不會顯示在另一個子域中:

subdomain1.domain.com/trial.php

<?php 
ini_set("session.cookie_domain", ".domain.com"); // allow access to this cookie from any subdomain 
session_start();  // create cookie 
$_SESSION['test'] = "TEST1"; // lets try to send "TEST1" in the other subdomain 
?> 

subdomain2.domain.com/trial.php

<?php 
ini_set("session.cookie_domain", ".domain.com"); 
session_start();  // cookie already set 
print_r($_SESSION); // $_SESSION array is empty 
?> 

感謝, milkael

回答

3

在數據庫中更好地存儲會話,並將其作爲cookie傳遞。 PHP在其中有一個參數(域)setcookie()以使cookie可用於整個域(包括子域)。

如此,前提是你的域和子域訪問同一個數據庫(或至少可以訪問到保存會話數據庫):

  • 店會話ID的數據庫(會話ID應該是每一個獨特的用戶)
  • 店在瀏覽器cookie中相同的會話ID(可跨多個域)
  • 當用戶訪問你的另一子域,只需用的值與數據庫進行比較的cookie值,你就會知道是誰那個人是一個一樣的人。
+0

嗯,感謝您的回覆,但我不喜歡自己製作會話,我更願意讓PHP處理它。你可以請調試以前的PHP代碼,以便第二個子域提取$ _SESSION ['test']的值嗎?謝謝 – 2012-02-19 13:29:17

+0

*「這樣做的缺點是會話數據無法與您一起旅行到其他子域名。」* - http://www.epigroove.com/posts/87/using_php_sessions_across_subdomains – Joseph 2012-02-19 20:43:29

+0

http://stackoverflow.com/問題/ 6318492 /共享會話,過子域功能於PHP – Joseph 2012-02-19 20:47:45