gpt4 book ai didi

session - 跨多个具有不同子域的商店的 Opencart 购物车

转载 作者:行者123 更新时间:2023-12-04 18:13:58 26 4
gpt4 key购买 nike

您好,有一个带有不同子域(都在同一个域下)的商店的单个 opencart 安装设置。我希望客户能够将商品放在一个站点的购物车中,然后移至下一个站点并放入更多甚至减去,直到最终客户在任何商店结账。注意产品可能会出现在一家商店,但不会出现在另一家商店。

我注意到 opencart 有点这样做。即它将已经在购物车中的产品带到下一个商店,但前提是产品同时出现在两个商店中。此外,如果客户随后删除其中一件商品并回到同一家商店,他们的产品就会重新出现。

第一个问题似乎首先是购物车中的产品通过我猜是通过 store_id 选择产品的查询来显示。我仔细看了看是否能找到任何东西,但不知所措。

第二个问题似乎与 session 的内容有关。我仍在学习 php,甚至对如何尝试修改 session 的工作方式感到有些困惑。

任何人都可以就我如何解决/更改此问题提供一些指导。

最佳答案

OpenCart 将所有这些信息存储在您的 PHP session 中。由于您的商店位于不同的子域下,因此当您从一个商店切换到另一个商店时,PHP session 会发生变化。

因此,您需要做的第一件事是在所有子域之间共享 session 。默认情况下,PHP 使用 'PHPSESSID' cookie 来跨多个页面传播 session 数据,并且默认情况下它使用 cookie 声明中的当前顶级域和子域。

示例:www.domain.com

这样做的缺点是 session 数据无法与您一起传输到其他子域。因此,如果您在 www.domain.com 上启动 session ,则 session 数据在 forums.domain.com 上将变得不可用。解决方案是更改 PHP 在设置“PHPSESSID”cookie 时使用的域。

假设您有一个包含在每个 PHP 页面顶部的 init 文件,您可以使用 ini_set() 函数。只需将其添加到初始化页面的顶部:

ini_set('session.cookie_domain',
substr($_SERVER['SERVER_NAME'],strpos($_SERVER['SERVER_NAME'],"."),100));

这行代码获取域并关闭子域。

示例:forums.domain.com -> .domain.com

现在,每次 PHP 设置 'PHPSESSID' cookie 时,该 cookie 将可用于所有子域!

您可能还需要对 OpenCart 的核心进行一些小修改才能使其正常工作。

玩得开心 :)

关于session - 跨多个具有不同子域的商店的 Opencart 购物车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12066759/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com