您的位置:首页 > 其它

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

2012-10-13 23:00 288 查看
最近给客户做一个手机应用,同时需要搭建一个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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: