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

最近给客户做一个手机应用,同时需要搭建一个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

一个背包,几本书,所有喜欢的歌,

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

相关文章:

你感兴趣的文章:

标签云: