帝国cms和discuz免激活同步登录

此处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目录下e\api\uc.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,0,0,0,0,0,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",1,$logincookie);
$set4=esetcookie("mlrnd",$rnd,$logincookie);
esetcookie("mldoactive","",0);
//$set5=esetcookie("mldoactive",$uid,$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'], array('login', '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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值