在多个web应用程序之间共享PHP会话

5

我有两个在同一域名下的网站应用程序(一个是CMS,另一个是电子商务平台),我想在它们之间共享会话数据。我可以很容易地设置它们都使用相同的会话,但是$_SESSION变量中可能存在太多的变量名冲突。我认为可以使用命名会话,但是我也无法使其正常工作:

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和购物车之间有无缝集成。

你考虑过使用cookies吗? - the_red_baron
很好的问题。这很令人惊讶。我想知道这种行为已经持续多久了,因为我之前在同一个脚本中使用session_name()和session_write_close(),就像你想要的那样。 - goat
https://bugs.php.net/bug.php?id=45380 - goat
1个回答

0

我建议使用嵌套数组对会话进行命名空间处理:

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

你也可以考虑将会话信息存储和检索到数据库中,仅使用会话来存储用户认证信息,以告诉您要访问哪些数据库行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接