在 2 个站点之间传输会话?



我有 2 个网站 A.com 和 B.com。我想将我的购物篮发送到 A.com 与 PHP 会话 B.com。 例如: 我的 A.com 篮;

session_start();
$i=0;
$_SESSION['basket'][$i]->name = "apple";
$_SESSION['basket'][$i]->description = "apppppppp";
//..etc

我试图从 B.com 连接,我看到会话中的注释。如何查看购物篮?

我必须看到这个

{
"loggedInUser": null,
"sessionid": "7hipbcrktd41lk82lvj8n967n0",
"products": [
{
"id": "8850",
"image": "737986198.jpg",
"title": "iPhone X Lansman Red Kılıf",
"code": "PY0088",
"category": "277",
"subcategory": "284",
"products": "284",
"marka": "APPLE",
"model": "iPhone X",
"type": "normal",
"price": "89.90",
"quantity": 1
}
]
}

但我看到这个

{"loggedInUser":null,"sessionid":"evlddomnf5tn116mu9aqasr2l1"}

即使我设置session_id仍然无法正常工作。 请帮忙。

它将帮助您:

1.如果会话是在cookie中设置的,则无法将其转移(除非转移到子域(,请确保通过GET转移会话

2.In 服务器之间同步与会话关联的数据,您必须共享文件系统,至少对于保存会话的路径(例如/tmp/php(

3.如果将对象保存在会话中,请确保它们在两台服务器上都可用

跨域会话 ID

默认情况下,会话 ID 使用 Cookie 进行传递。由于您的网站位于不同的域中,因此会话cookie不会转移,因此这是阻止跨域会话工作的一件事。

传输会话 id 的一种技术是将它们附加到所有请求的查询字符串中(PHP 甚至对此有一定程度的内置支持(。但是,这种做事方式有很多缺点 - 最重要的是人们一直在复制/粘贴URL,这意味着显示有效和重用无效的会话ID - 因此不建议这样做。

更好的方法是使用 Javascript 在所有感兴趣的域中发出跨域请求(当然,这需要在这方面进行合作(。这样,您可以根据需要在任意数量的服务器上无缝传输会话 ID。

此问题的简单解决方案是使用自定义会话处理程序,该处理程序将数据存储在数据库或其他全局可访问的存储中。

https://www.php.net/manual/en/session.customhandler.php

最新更新