最近給客戶作一個手機應用,同時須要搭建一個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