1.ecshop登录,discuz也登录,但ecshop退出,discuz却保持登录状态
修改ecshop/includes/lib_common.php
将
res=calluserfuncarray(
func,
params);替换成
res = call_user_func_array(
func,empty(
params) ? array(‘0’) : $params); 可以实现ecshop登录、退出后,discuz也跟着做同样的动作,但是discuz登录、退出,ecshop都不能跟着同样动作。
2.解决discuz和ecshop完全同步:
打开uc_client/data/cache/apps.php发现这里面只有一个站点,那么将其复制一份粘贴到下面,改一下相应的信息,如下图:
!这里写图片描述
3.从ecshop登录,discuz退出,会出现ecshop没有退出的现象。由于cookie值域的问题。因为discuz在退出的时候会用JS调用到这个api来同步退出。
修改ecshop/api/uc.php中的set_cookie函数,约414行替换成以下代码:
setcookie(‘ECS[user_id]’, ”,
time,
GLOBALS[‘cookie_path’],
GLOBALS[‘cookiedomain′]);setcookie(‘ECS[username]′,”,
time,
GLOBALS[‘cookiepath′],
GLOBALS[‘cookie_domain’]);
setcookie(‘ECS[email]’, ”,
time,
GLOBALS[‘cookie_path’], $GLOBALS[‘cookie_domain’]);
4.打开ecshop/includes/modules/integrates/ucenter.php
ucenter(
cfg)函数(约87行)
this->is_ecshop = 1;后面添加代码:
this−>cookiepath=
cfg[‘cookie_path’];
this−>cookiedomain=
cfg[‘cookie_domain’];
第468行set_cookie(
username=”)函数加入域范围,替换代码:/∗摧毁cookie∗/
time = time() - 3600;
setcookie(“ECS[user_id]”, ”,
time,
this->cookie_path,
this−>cookiedomain);setcookie(“ECS[password]”,”,
time,
this−>cookiepath,
this->cookie_domain);
这样就可以实现完全同步了。