此处ecms为版本6.6 ,discuz为Discuz! X2
①后台设置discuz免激活
②通过ucenter整合ecms
③帝国cms免激活登录
④discuz注册时同步登录
论坛需要在cms目录下,否则同步登陆不能做到免激活
①后台设置discuz免激活 后台=>站长=>UCenter 设置=>是否允许直接激活,选择是
Ucenter默认和discuz是整合的
②通过ucenter整合ecms
提交后是这样
然后在http://www.phome.net/download/页面下载[DISCUZ
UCenter GBK接口]
将接口包的”upload”目录里的文件夹及文件上传至帝国CMS的”e”目录里(注意是上传 upload 目录中的文件和目录,而不是上传 upload 目录本身)。
修改帝国CMS目录下的e/config.inc.php文件配置
打开刚才ecms应用复制UCenter 配置信息如图
粘帖至e/config.inc.php
通信成功
现在可以在论坛注册一个用户测试了,测试结果是,ecms没同步登录上,但是用刚才注册的用户可以手动登录上,也就是没有做到免激活
③帝国cms免激活登录
在后台找到模版”JS调用登陆模板”修改注册地址[!--news.url--]/bbs/member.php?mod=register&referer=[!--news.url--]
Ecms目录下eapiuc.php文件中找到代码块
1
elseif($action == 'synlogin' && $_GET['time'] == $get['time'])
后面(大概176行)
1
2
3
4
5
else
{
$set5=esetcookie("mldoactive",$uid,$logincookie);
}
修改为else
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
//同步登录 API 接口
$uid = intval($get['uid']);
$logincookie=time()+86400*365;//cookie保存时间
$rnd=make_password(12);
//默认会员组
if(empty($ur['groupid'])){
$ur['groupid']=$public_r['defaultgroupid'];
}
$usql=$empire->query("INSERT INTO {$dbtbpre}enewsmember(userid,username,password,rnd,email,
registertime,groupid,userfen,userdate,money,zgroupid,havemsg,checked,salt)
VALUES('$uid','$get[username]','','$rnd','$get[email]','$logincookie',1,'')");
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
$set1=esetcookie("mlusername",$get['username'],$logincookie);
$set2=esetcookie("mluserid",$get['uid'],$logincookie);
$set3=esetcookie("mlgroupid",$logincookie);
$set4=esetcookie("mlrnd",$rnd,$logincookie);
esetcookie("mldoactive","",0);
//$set5=esetcookie("mldoactive",$logincookie);
}
④discuz注册时同步登录
找到source/class/class_member.php(你的discuz目录下)
在class logging_ctl 里面找到function on_logout(),在上面加入以下代码
1
2
3
4
5
6
7
8
9
10
11
12
function on_ucsyn(){
global $_G;
if($_G['uid']) {
$ucsynlogin = $this->setting['allowsynlogin'] ? uc_user_synlogin($_G['uid']) : '';
$url_forward = dreferer();
if(strpos($url_forward,$this->setting['regname']) !== false) {
$url_forward = 'forum.php';
}
showmessage('login_succeed',$url_forward ? $url_forward : './',array('username' => $_G['member']['username'],
'usergroup' => $_G['group']['grouptitle'],'uid' => $_G['uid']),array('extrajs' => $ucsynlogin));
}
}
然后找到
1
2
3
if(strpos($url_forward,$this->setting['regname']) !== false || strpos($url_forward,'buyinvitecode') !== false) {
$url_forward = 'forum.php';
}
在后面添加
1
2
3
4
else{
$url_forward = 'member.php?mod=logging&action=ucsyn&referer='.$url_forward; //uc syn
}
//$url_forward 可以修改成 $_G['gp_referer'],同时品牌空间的注册地址需要填写为 http://discuz注册地址&referer=品牌空间地址
找到 source/module/member/member_logging.php (你的discuz目录下)
1
2
3
if(!in_array($_G['gp_action'],array('login','logout'))) {
showmessage('undefined_action');
}
改成
1
2
3
if(!in_array($_G['gp_action'],'logout','ucsyn'))) {
showmessage('undefined_action');
}
好了,大功告成,可以测试一下了
参考:
http://www.zzbaike.com/wiki/ECMS_6.6/%E6%95%B4%E5%90%88Ucenter%E6%8E%A5%E5%8F%A3%E6%95%99%E7%A8%8B
http://www.discuz.net/thread-2356743-1-1.html