ecshop在启用ucenter整合退出时候的程序错误及修复代码

2016-07-07 14:56 来源:www.chinab4c.com 作者:ecshop专家

情景回放ec 在 http://www.域名.com
dzx2 在 http://www.域名.com/bbs/
uc在 http://www.域名.com/bbs/uc_server/

设置ec会员整合ucenter ,通信正常
测试如下4种情况
ec登陆后->dzx登陆正常->ec退出->dzx退出正常
ec登陆后->dzx登陆正常->dzx退出->ec退出失败
dzx登陆后->ec登陆正常->dzx退出->ec退出正常
dzx登陆后->ec登陆正常->ec退出->dzx退出正常

上面就情况2失败
经检测 ec 下 http://www.域名.com/api/uc.php 代码有错误
function set_cookie($user_id=”, $user_name = ”, $email = ”)
{
if (empty($user_id))
{
/* 摧毁cookie */
$time = time() – 3600;
setcookie(‘ECS[user_id]‘, ”, $time);//这里有问题
setcookie(‘ECS[username]‘, ”, $time);//这里有问题
setcookie(‘ECS[email]‘, ”, $time);//这里有问题
}
else
{
/* 设置cookie */
$time = time() + 3600 * 24 * 30;
setcookie(“ECS[user_id]“, $user_id, $time, $GLOBALS['cookie_path'], $GLOBALS['cookie_domain']);
setcookie(“ECS[username]“, $user_name, $time, $GLOBALS['cookie_path'], $GLOBALS['cookie_domain']);
setcookie(“ECS[email]“, $email, $time, $GLOBALS['cookie_path'], $GLOBALS['cookie_domain']);
}
}



因为从 dzx 退出时候会访问到 <script src=http://www.域名.com/api/uc.php?......></script>
这里setcookie 居然不是/ 性质的,导致ec无法退出
改正如下


function set_cookie($user_id=”, $user_name = ”, $email = ”)
{
if (empty($user_id))
{
/* 摧毁cookie */
$time = time() – 3600;
setcookie(‘ECS[user_id]‘, ”, $time,$GLOBALS['cookie_path'], $GLOBALS['cookie_domain']);
setcookie(‘ECS[username]‘, ”, $time,$GLOBALS['cookie_path'], $GLOBALS['cookie_domain']);
setcookie(‘ECS[email]‘, ”, $time,$GLOBALS['cookie_path'], $GLOBALS['cookie_domain']);
}
else
{
/* 设置cookie */
$time = time() + 3600 * 24 * 30;
setcookie(“ECS[user_id]“, $user_id, $time, $GLOBALS['cookie_path'], $GLOBALS['cookie_domain']);
setcookie(“ECS[username]“, $user_name, $time, $GLOBALS['cookie_path'], $GLOBALS['cookie_domain']);
setcookie(“ECS[email]“, $email, $time, $GLOBALS['cookie_path'], $GLOBALS['cookie_domain']);
}
}







需要ecshop技术支持 QQ733905

回答:
不是这么简单修改uc.php就可以吧

怎么修改后通信不正常了呢

路过帮顶了!!

茶叶网路过,代码不要随意改动,按照继承方案来做,不会出错的,

有人试过吗

这是一定的

不错可以。。顶

不错,支持共亨bug,一起完善我们的ecshop



帮你解释下!楼上的东西不能直接复制!!!需要修改标点,中英文问题 新手容易忽略