admin 发表于 2014-11-22 00:57:42

解决Discuz X整合其他系统后同步问题

解决Discuz X整合其他系统后同步问题

本文关键字词:同步登陆,同步注册,同步注销,discuz

有很多程序整合discuz后,UC中显示通信成功,在整合端登陆注销,DX也会跟随同步登陆注销
但是反过来在DX中登陆注销,整合端反而不会跟随同步登陆注销。实在是很恶心!!!
后查询发现,原来是dx登陆注册的时候没有返回给UC状态。
所以暂时解决方案如下:
DX的client.php文件中(默认在uc_client目录下):
找到310行左右


function uc_user_synlogin($uid) {
      $uid = intval($uid);
      if(@include UC_ROOT.'./data/cache/apps.php') {
                if(count($_CACHE['apps']) > 1) {
                        $return = uc_api_post('user', 'synlogin', array('uid'=>$uid));
                } else {
                        $return = '';
                }
      }
      return $return;
}

function uc_user_synlogout() {
      if(@include UC_ROOT.'./data/cache/apps.php') {
                if(count($_CACHE['apps']) > 1) {
                        $return = uc_api_post('user', 'synlogout', array());
                } else {
                        $return = '';
                }
      }
      return $return;
}


修改为:
function uc_user_synlogin($uid) {
      $uid = intval($uid);
      if(@include UC_ROOT.'./data/cache/apps.php') {
                if(count($_CACHE['apps']) > 1) {
                        $return = uc_api_post('user', 'synlogin', array('uid'=>$uid));
                } else {
                        $return = uc_api_post('user', 'synlogin', array('uid'=>$uid));
                }
      }
      return $return;
}

function uc_user_synlogout() {
      if(@include UC_ROOT.'./data/cache/apps.php') {
                if(count($_CACHE['apps']) > 1) {
                        $return = uc_api_post('user', 'synlogout', array());
                } else {
                        $return = uc_api_post('user', 'synlogout', array());
                }
      }
      return $return;
}


这样即可实现双向同步登陆注销了。具体有什么后遗症没具体测试,有心的同学可以测试测试。
页: [1]
查看完整版本: 解决Discuz X整合其他系统后同步问题