[求助] ucenter及discuz整合,双向同步注册及登录注意事项2016年9

[求助] ucenter及discuz整合,双向同步注册及登录注意事项2016年9

2018-10-26 15:55

如果遇到接口调试问题,可以参考我的其它教程.

http://blog.csdn.net/viqecel/article/details/52492081

http://blog.csdn.net/viqecel/article/details/52485774


后台修改方法


注意


所有涉及文件修改的,不管什么结尾的,只要是文本类的文件,都需要用专业的编程软件打开.比如notepad++ 工具.
否则,会导致网站错位,乱码等,因为会产生bom头问题.具体可以搜索下






一,先进论坛后台,站长,ucenter设置,选择允许直接激活
二,进ucenter ,应用管理,新建立应用.类型选其它,名称填book,主url填你的网站主页网址.比如http://123.com
通信密钥随便填一个密码,最下面同步登录填是.其它不用填,保存.


三,修改要整合的第三方应用网站的数据库配置.方便从第三方网站上,同步插入会员数据到ucenter中.
有些可能需要在后台配置,或直接修改文件,要具体分析.
这个文件里面的内容.其实就是ucenter后台,book应用,编辑后,拉到最下面,看到配置信息,把他全部复制后,填在uc.php中的对应位置,保存,上传,替换原文件即可..


四,去论坛的安装目录中,找uc_client/data/cache/apps.php 打开,里面有你uc后台的所有应用,如果没有.说明不正常.把里面所有内容.复制,填到book网站对应的uc_client\data\cache\apps.php中,保存上传
这两个文件要一致,才能同步.




五,实现论坛上注册会员后,直接在所有应用中自动登录,而不必登录,再登录一次才同步.
方法
修改论坛目录中对应的,\uc_client\model\user.php 中的function add_user 函数


把大约131行的


$salt = substr(uniqid(rand()), -6);




整体替换为


$salt = substr(uniqid(rand()), -6);
$password2 = md5($password);

然后,在return $uid;


的上面增加下面这段代码



$time2=date('Y-m-d H:i:s',$this->base->time);
$this->db->query(http://www.discuz.net/http://www.discuz.net/"INSERT INTO admin_book.hbdx_users  SET uc_id='$uid',user_mail='$email',user_name='$username',user_group='同步注册会员',user_displayname='$username',registerdate='$time2',user_pass='$password2',user_integration='10'http://www.discuz.net/http://www.discuz.net/");






/////注意,其中,admin_book 表示book网站对应的数据库名,hbdx_users 表示表名,可以相应修改为正在使用的.


六,同时,修改论坛目录中的.
\source\class\class_member.php


找到大约926行的








   $extra = array(
        'showid' => 'succeedmessage',
        'extrajs' => '<script type=http://www.discuz.net/http://www.discuz.net/",香港六和合资料2018;text/javascripthttp://www.discuz.net/http://www.discuz.net/">'.
    'setTimeout(http://www.discuz.net/http://www.discuz.net/"window.location.href =\''.$href.'\';http://www.discuz.net/http://www.discuz.net/", 3000);'.
    '$(\'succeedmessage_href\').href = \''.$href.'\';'.
    '$(\'main_message\').style.display = \'none\';'.
    '$(\'main_succeed\').style.display = \'\';'.
    '$(\'succeedlocation\').innerHTML = \''.lang('message', $locationmessage).'\';'.
        '</script>',
        'striptags' => false,
);










整体替换为






$ucsynlogin = '';
                        if($_G['setting']['allowsynlogin']) {
                                loaducenter();
                                $ucsynlogin = uc_user_synlogin($_G['uid']);
                        }
$extra = array(
'showid' => 'succeedmessage',
'extrajs' => '<script type=http://www.discuz.net/http://www.discuz.net/"text/javascripthttp://www.discuz.net/http://www.discuz.net/">'.
'setTimeout(http://www.discuz.net/http://www.discuz.net/"window.location.href =\''.$href.'\';http://www.discuz.net/http://www.discuz.net/", '.$refreshtime.');'.
'$(\'succeedmessage_href\').href = \''.$href.'\';'.
'$(\'main_message\').style.display = \'none\';'.
'$(\'main_succeed\').style.display = \'\';'.
'$(\'succeedlocation\').innerHTML = \''.lang('message', $locationmessage).'\';'.
'</script>'.$ucsynlogin,
'striptags' => false,
);



//其实主要是在后面增加了这一句
//.$ucsynlogin ,从而实现论坛上初次注册的会员,就可以直接同步到另一站,不需要退出再登录一次.





七,如果论坛中已经存在以前注册的用户,如果他论坛上登录后,想同步注册到本站,则还需要在论坛目录中,增加个email参数.这样,本应用的api/uc.php中就能得到这个参数.
具体为
\uc_server\control\user.php,要修改本文件的onsynlogin()

下面这个函数直接替换原来的就行.里面增加了email








function onsynlogin() {
$this->init_input();
$uid = $this->input('uid');
if($this->app['synlogin']) {
if($this->user = $_ENV['user']->get_user_by_uid($uid)) {
$synstr = '';
foreach($this->cache['apps'] as $appid => $app) {
if($app['synlogin']) {
if($app['appid'] != $this->app['appid']) {
$synstr .= '<script type=http://www.discuz.net/http://www.discuz.net/"text/javascripthttp://www.discuz.net/http://www.discuz.net/" src=http://www.discuz.net/http://www.discuz.net/"'.$app['url'].'/api/'.$app['apifilename'].'?time='.$this->time.'&code='.urlencode($this->authcode('action=synlogin&username='.$this->user['username'].'&uid='.$this->user['uid'].'&email='.$this->user['email'] .'&password='.$this->user['password'].http://www.discuz.net/http://www.discuz.net/"&time=http://www.discuz.net/http://www.discuz.net/".$this->time,'ENCODE', $app['authkey'])).'http://www.discuz.net/http://www.discuz.net/" reload=http://www.discuz.net/http://www.discuz.net/"1http://www.discuz.net/http://www.discuz.net/"></script>';
}
if(is_array($app['extra']['extraurl'])) foreach($app['extra']['extraurl'] as $extraurl) {
$synstr .= '<script type=http://www.discuz.net/http://www.discuz.net/"text/javascripthttp://www.discuz.net/http://www.discuz.net/" src=http://www.discuz.net/http://www.discuz.net/"'.$extraurl.'/api/'.$app['apifilename'].'?time='.$this->time.'&code='.urlencode($this->authcode('action=synlogin&username='.$this->user['username'].'&uid='.$this->user['uid'].'&email='.$this->user['email'].'&password='.$this->user['password'].http://www.discuz.net/http://www.discuz.net/"&time=http://www.discuz.net/http://www.discuz.net/".$this->time,'ENCODE', $app['authkey'])).'http://www.discuz.net/http://www.discuz.net/" reload=http://www.discuz.net/http://www.discuz.net/"1http://www.discuz.net/http://www.discuz.net/"></script>';
}
}
}
return $synstr;
}
}
return '';
}






//函数结束