php - 在 2 个站点之间转移会话?
问题描述
我有 2 个网站 A.com 和 B.com。我想通过 PHP 会话将我在 A.com 上的购物篮发送到 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.为了使与SESSION相关的数据在服务器之间同步,您必须共享文件系统,至少对于保存SESSIONS的路径(例如/tmp/php)
3.如果您将对象保存在 SESSION 中,请确保它们在两台服务器上都可用
跨域会话 ID
默认情况下,会话 ID 使用 cookie 传递。由于您的网站位于不同的域上,因此会话 cookie 不会传输过来,因此这是阻止跨域会话工作的一件事。
传递会话 ID 的一种技术是将它们附加到所有请求的查询字符串中(PHP 甚至对此有一定程度的内置支持)。然而,这种做事方式有很多缺点——最重要的是人们一直在复制/粘贴 URL,这意味着揭示有效和重用无效会话 id——因此不推荐使用。
更好的方法是使用 Javascript 跨所有感兴趣的域发出跨域请求(当然这需要合作)。通过这种方式,您可以根据需要在任意数量的服务器之间无缝传输会话 ID。
此问题的一个简单解决方案是使用自定义会话处理程序,将数据存储在数据库或其他全局可访问的存储中。
推荐阅读
- python - 将大列表组合成一个字典
- firebase - 如何调试连接到 Firebase 实时数据库的非常慢的解析器?
- python - 使用多个条件的 df 中的新列
- python - 如何检查字典中的任何键是否为空?Python
- reactjs - 如何在第一次渲染时处理空值?
- sqlite - 如何“重新编译”具有更高附加限制的 Sqlite
- java - (JAVA)有没有更有效的方法来做到这一点?
- php - 为什么这个 && 不会触发为假?
- amazon-web-services - 配置 ec2 以运行脚本以从 sftp 站点下载文件?
- python - 如何正确设置此 while 循环?