您的位置:首页 > 其它

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

2013-01-21 18:10 411 查看
此处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行)

12
3
4
5

else
 
{
$set5=esetcookie("mldoactive",$uid,$logincookie);
}

修改为else

12
3
4
5
6
7
8
9
10
1112
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(),在上面加入以下代码

12
3
4
5
6
7
8
9
10
1112

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));
}
}

然后找到

12
3

if(strpos($url_forward, $this->setting['regname']) !== false || strpos($url_forward, 'buyinvitecode') !== false) {
$url_forward = 'forum.php';
}

在后面添加

12
3
4

else{
$url_forward = 'member.php?mod=logging&action=ucsyn&referer='.$url_forward; //uc syn
}
//$url_forward 可以修改成 $_G['gp_referer'],同时品牌空间的注册地址需要填写为 http://discuz注册地址&referer=品牌空间地址[/code] 
找到 source/module/member/member_logging.php (你的discuz目录下)

12
3

if(!in_array($_G['gp_action'], array('login', 'logout'))) {
showmessage('undefined_action');
}

改成

12
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Discuz 帝国cms