我有以下情况:
我设法在不同的域上安装所有3个商店,并且所有商店都使用相同的opencart安装(store1)。到目前为止,所有似乎都正常工作。我需要的是当用户在 domain1.com 上,在他的购物车中添加 product1 ,然后导航到 store2(domain2.com)并且在他的购物车中添加了 product2 - 现在他应该从 shop1 和 shop2 中同时拥有 product1 shop2 < / em>在他的购物车中。换句话说,如果用户登录到 store1 ,所有商店都应该像一个商店,那么当他导航到 store2时,他应该保留他的登录会话,购物车和所有其他选项或 store3 。
有没有办法实现这个目标?
注意:如果商店安装在多个子域中但未使用不同的域,我知道如何实现此目的。
答案 0 :(得分:1)
我刚刚找到了解决这个问题的方法,所以这就是我所做的:
我修改了/system/library/session.php,如下所示:
if ($_SERVER['HTTP_HOST'] != 'store1.loc') {
if (!isset($_COOKIE["PHPSESSID"]) && !isset($_GET['session_id'])) {
$actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";//get current URL
header('Location: http://store1.loc?getsession=true&url='.base64_encode($actual_link));
}
elseif (isset($_GET['session_id'])) { //set session based on the session_id received from main store
session_destroy();
session_id($_GET['session_id']);
session_start();
header('Location: '. base64_decode($_GET['url'])); //redirect to original requested url
}
}
else {
if (isset($_GET['getsession'])) { //send back session_id
header('Location: http://store2.loc?session_id='.urlencode(session_id()) . '&url=' . $_GET['url']);
}
}
说明:如果用户进入任何不是主要商店的商店,则会对主商店进行重定向,如果不存在会话,则启动会话,然后将会话ID发送回请求者通过url中的GET参数,然后使用相同的会话ID启动会话,然后重定向回原始请求的URL。这样做的缺点是,当用户第一次访问store2时,由于重定向,页面加载将至少翻倍。