discuz x2.5論壇和其餘系統整合反向數據同步問題

最近給客戶作一個手機應用,同時須要搭建一個discuz論壇,給用戶交流使用。php

目前咱們稱手機應用項目爲:java項目,稱論壇爲discuz項目。html

如今客戶的需求是主要下面幾點:java

1.用戶使用手機註冊後,賬號也應該能夠在論壇登陸。程序員

2.用戶在論壇註冊後,此賬號也能夠在手機應用中登陸使用。web

3.由於手機應用已經積累的幾萬的老用戶了,這部分用戶由於密碼的加密機制和discuz不一樣,沒法進行用戶的遷移。因此這部分用戶的處理策略是:用戶登陸論壇時,若是用戶不存在,就調用java項目的接口,查詢一次該用戶。若是在java系統中有該用戶,則將該用戶同步到discuz項目中,並讓論壇同步登陸。網絡

關於java系統若是向discuz系統中,寫入用戶數據,網上有關於ucenter整合的示例,能夠參考。函數

下面咱們主要來講說,當用戶在論壇登陸或註冊時,若是向java系統,反向寫入數據。那這就須要改寫discuz的註冊和登陸的代碼。網站

下面以更改登陸爲例:ui

discuz的代碼結構,若是是初次接觸真的不太好搞清楚,況且仍是一個java程序員去看php代碼,一團霧水哈哈。固然,仍是要找到關鍵的業務邏輯代碼啊。this

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

相關文章
相關標籤/搜索