文档章节

discuz x2.5论坛和其他系统整合反向数据同步问题

小查查
 小查查
发布于 2012/10/13 22:47
字数 865
阅读 1059
收藏 3

最近给客户做一个手机应用,同时需要搭建一个discuz论坛,给用户交流使用。

目前我们称手机应用项目为:java项目,称论坛为discuz项目。

现在客户的需求是主要下面几点:

1.用户使用手机注册后,帐号也应该可以在论坛登录。

2.用户在论坛注册后,此帐号也可以在手机应用中登录使用。

3.因为手机应用已经积累的几万的老用户了,这部分用户因为密码的加密机制和discuz不同,无法进行用户的迁移。所以这部分用户的处理策略是:用户登录论坛时,如果用户不存在,就调用java项目的接口,查询一次该用户。如果在java系统中有该用户,则将该用户同步到discuz项目中,并让论坛同步登录。

关于java系统如果向discuz系统中,写入用户数据,网上有关于ucenter整合的示例,可以参考。

下面我们主要来说说,当用户在论坛登录或注册时,如果向java系统,反向写入数据。那这就需要改写discuz的注册和登录的代码。

下面以更改登录为例:

discuz的代码结构,如果是初次接触真的不太好搞清楚,何况还是一个java程序员去看php代码,一团雾水哈哈。当然,还是要找到关键的业务逻辑代码啊。

discuz的登录代码位置是:discuz/uc_client/control/user.php文件中,这个是针对discuz x2.5这个版本,其他版本是不是也这个文件我也没去多研究。

打开该文件,可以发现有很多的function,那么我们找到登录的函数:onlogin

function onlogin() {
	$this->init_input();
	$isuid = $this->input('isuid');
	$username = $this->input('username');
	$password = $this->input('password');
	$checkques = $this->input('checkques');
	$questionid = $this->input('questionid');
	$answer = $this->input('answer');
	if($isuid == 1) {
		//通过uid登录
		$user = $_ENV['user']->get_user_by_uid($username);
	} elseif($isuid == 2) {
		//通过邮箱登陆
		$user = $_ENV['user']->get_user_by_email($username);
	} else {
		//通过用户名登录,一般应该是用的此方式登录
		$user = $_ENV['user']->get_user_by_username($username);
	}

	$passwordmd5 = 
		preg_match('/^\w{32}$/', $password) ? $password : md5($password);
	if(empty($user)) {
		//该用户不存在,返回-1,如果需要反向登录,可以在此代码块加入自己的业务逻辑
		$status = -1;
	} elseif($user['password'] != md5($passwordmd5.$user['salt'])) {
		//密码不正确
		$status = -2;
	} elseif($checkques && $user['secques'] != '' && 
			$user['secques'] != $_ENV['user']->
			quescrypt($questionid, $answer)) {
		//保密问题回答不正确
		$status = -3;
	} else {
		//登录成功
		$status = $user['uid'];
	}
	$merge = $status != -1 && !$isuid && 
		$_ENV['user']->check_mergeuser($username) ? 1 : 0;
	return array($status,$user['username'],$password,$user['email'],$merge);
}

这个就是discuz的登录处理函数,大致的我们可以理解了。那么回到我们的逻辑上来,当discuz中不存在一个用户时,需要去java系统中在找一次,我们就在上面代码判断用户为空的时候,加入我们自己的代码逻辑就好啦!

当然user.php这个文件中还有很多其他的函数,比如注册函数,同步登录,同步退出等等,稍微做些研究,应该就可以自己动手修改啦!

本文首发于度外网络官方博客,转载请注明出处:http://www.duwaiweb.com/blog/20121008_439f9460-c0a4-42a1-85d8-fa88b92c2d72.html

论文汇隶属于度外网络旗下网站,专注java毕业设计服务,详情请访问:http://www.lunwenhui.com/java/page_3.html

本文转载自:http://www.duwaiweb.com/blog/20121008_439f9460-c0a4-42a1-85d8-fa88b92c2d72.html

小查查

小查查

粉丝 1
博文 18
码字总数 1794
作品 0
徐汇
私信 提问
Discuz! X2.5 Beta 版发布 供站长体验与测试

今日消息,Discuz! X2.5 Beta版已经正式发布,主要供站长下载并体验新版本功能。据Discuz! 官方介绍,此次提供的Discuz! X2.5 Beta版仅供站长测试和体验各项新功能,以收集站长反馈、改进建议...

红薯
2012/02/07
1K
50
Discuz! X2.5正式版发布迎来第三次开放

4月7日消息,第七届中国互联网站长年会于今日在北京国际会议中心召开,康盛公司总裁戴志康、副总裁袁兆江以及落伍者创始人董勤锋在大会上联合发布了Discuz! X2.5正式版以及Discuz! 云平台升级...

红薯
2012/04/07
3.8K
37
discuz x2.5导致mysql负载很高

服务器配置:HP dl380,一颗X5550 @ 2.67GHz,6G内存,1TB 10K sas硬盘 服务器只跑了论坛一个服务,同时设置了rsync同步和mysql主从用做备份 centos 5.7 discuz x2.5,每天PV在15万上下,日发...

武当剑客
2014/08/11
105
0
Java通过UCenter实现Discuz同步登录

前言 discuzucenterapiforjava针对UCenter1.5/1.6版本均可正常通信,测试过程中,Discuz X2.5/X3.0/X3.2均测试通过。在开始前,有几个点需要先了解。 Discuz和UCenter是两个相对独立的应用系...

0_0Boom
2015/12/24
2.6K
2
jsp应用程序 与 discuz x2.5 论坛 实现同步 登录 ,注册, 注销

jsp应用程序 与 discuz x2.5 论坛 实现同步 登录 ,注册, 注销! 有例子的童鞋们 发到我的邮箱 hu3571951@163.com 谢谢各位!

小小胡
2012/08/15
396
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS--列表

一、列表标识项 list-style-type none:去掉标识项 disc:默认实心圆 circle:空心圆 squire:矩形 二、列表项图片 list-style-img: 取值:url(路径) 三、列表项位置 list-style-position:...

wytao1995
今天
6
0
linux 命令-文本比较comm、diff、patch

本文原创首发于公众号:编程三分钟 今天学了三个文本比较的命令分享给大家。 comm comm 命令比较相同的文本 $ cat charabc$ cat chardiffadc 比如,我有两个文件char和chardiff如上,...

编程三分钟
今天
7
0
QML教程

https://blog.csdn.net/qq_40194498/article/category/7580030 https://blog.csdn.net/LaineGates/article/details/50887765...

shzwork
今天
5
0
HA Cluster之5

对于使用heartbeat v2版的CRM配置的集群信息都是保存在一个名为cib.xml的配置文件中,存放在/var/lib/heartbeat/crm/下。CIB:Cluster Information Base,由于xml文件配置不是那么方便,所以...

lhdzw
今天
6
0
玩转Redis-Redis基础数据结构及核心命令

  《玩转Redis》系列文章主要讲述Redis的基础及中高级应用,文章基于Redis5.0.4+。本文主要讲述Redis的数据结构String,《玩转Redis-Redis基础数据结构及核心命令》相关操作命令为方便对比...

zxiaofan666
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部