2012-04-23 176 views
3

我在同一個域(一個CMS和一個電子商務平臺)上有兩個Web應用程序,我想在它們之間共享會話數據。我可以很容易地設置它們,因此它們都使用同一個會話,但$ _SESSION變量中的變量名衝突的可能性太大。我以爲我可以使用命名的會議,但我無法得到它的工作之一:在多個Web應用程序之間共享PHP會話

session_name("WEB_APP_ONE"); 
session_start(); 
$webAppOneData = $_SESSION; 
session_write_close(); 

//var_dump($_SESSION) = all of the session data for web app one is still contained in $_SESSION even though I closed the session with session_write_close() 

session_name("WEB_APP_TWO"); 
session_start(); 
$_SESSION['WEB_APP_ONE'] = $webAppOneData; 

//var_dump($_SESSION) = all of the session data for web app one is still here 

我不知道這是可能的,但我想知道這是否是!

注意:我得到的實際使用情況是能夠顯示CMS中訪問者的購物車中有多少產品。購物車數據存儲在電子商務平臺的會話中,但我需要從CMS的標題中顯示。我希望CMS和購物車之間能夠無縫整合。

+0

您是否考慮過使用Cookie? – 2012-04-23 21:43:39

+0

優秀的問題。這是令人驚訝的。我想知道這樣做有多長時間,因爲我之前使用session_name()和session_write_close()在同一個腳本中,就像這樣,出於同樣的原因。 – goat 2012-04-23 23:48:04

+0

https://bugs.php.net/bug.php?id=45380 – goat 2012-04-24 00:17:23

回答

0

我會建議只是名稱間距與嵌套數組會話:

$_SESSION['app1']['app1var'] = 'value'; 
$_SESSION['app2']['app2var'] = 'value'; 

你也可以考慮存儲和檢索數據庫中的會話信息,而不是使用會話只告訴存儲用戶的認證信息你訪問哪個數據庫行。

相關問題