2012-04-23 132 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'; 

你也可以考虑存储和检索数据库中的会话信息,而不是使用会话只告诉存储用户的认证信息你访问哪个数据库行。

相关问题