crx349 发表于 2016-4-3 13:25:52

discuz与ecshop整合后,无法同步登录解决方案

discuz与ecshop的整合我们这里就不做阐释,下面我们针对两者无法同步登录问题给出一个解决方案。
一,
打开ecshop会员整合编辑界面发现有一个错误,在“UCenter IP 地址"这一项中被系统填写成了ecshop管理员用户名,把这一项改写为正确的ip地址。如下图:

二,
打开discuz目录下source\plugin\myrepeats\switch.inc.php文件,找到$ucsynlogin = $_G['setting']['allowsynlogin'] ? uc_user_synlogin($_G['uid']) : '';
这一句,将其修改为$ucsynlogin = uc_user_synlogin($_G['uid']);(不做判断,强行指定)。
三,
打开discuz目录下source\class\class_member.php文件,该文件需要有三处修改。


1)在大约35行找到$ucsynlogin = $this->setting['allowsynlogin'] ? uc_user_synlogin($_G['uid']) : '';这一句,将其修改为$ucsynlogin =uc_user_synlogin($_G['uid']);(不做判断,强行指定。);

2 )在大约142行找到$ucsynlogin = $this->setting['allowsynlogin'] ? uc_user_synlogin($_G['uid']) : ''这一句,将其修改为$ucsynlogin = uc_user_synlogin($_G['uid']);(不做判断,强行指定)。[是的,上面两句完全一样]。


3)在大约找到318行找到$ucsynlogout = $this->setting['allowsynlogin'] ? uc_user_synlogout() : '',将其修改为$ucsynlogout = uc_user_synlogout();

四,
打开ecshop安装目录下includes\modules\integrates\ucenter.php文件,找到函数
      function logout() //(大约190行):
    {
      $this->set_cookie();//清除cookie
      $this->set_session(); //清除session
      $this->ucdata = uc_call("uc_user_synlogout");   //同步退出
      return true;
    }                                                               
将$this->ucdata = uc_call("uc_user_synlogout")这一句改为$this->ucdata = uc_call("uc_user_synlogout",array("0")); //同步退出



五,
分别打开discuz与ecshop应用下的uc_client\data\cache目录下的apps.php文件,结果发现两个文件有所不同。其中一个中的文件少了一个应用的配置。可以手动把缺少应用配置的那个文件填写完整后保存即可。


至此保存修改的文件,同步登录、退出解决完毕。
页: [1]
查看完整版本: discuz与ecshop整合后,无法同步登录解决方案