国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > CMS > Discuz > 正文

discuz注冊(cè)和登陸流程的(用戶中心同步)

2024-09-11 09:03:13
字體:
供稿:網(wǎng)友

下面看到一站長(zhǎng)分享的關(guān)于dz注冊(cè)與登錄的一個(gè)流程了,包括了用戶中心的同步配置,代碼如下希望對(duì)各位同學(xué)會(huì)有所幫助.

注冊(cè)流程

第一步:/source/class/class_member.php: on_register注冊(cè)入口,602 左右:

  1. if(!$activation) {//不為空,說明用戶已經(jīng)注冊(cè)過 
  2. //將用戶注冊(cè)到用戶中心,調(diào)用第二步uc_user_register方法 
  3. $uid = uc_user_register(addslashes($username), $password$email$questionid$answer$_G['clientip']); 

第二步:/uc_client/client.php:uc_user_register 調(diào)用將用戶注冊(cè)到用戶中心的方法,調(diào)用第三步的onregister方法.

第三步:/uc_client/control/user.php: onregister 將用戶注冊(cè)到用中心,調(diào)用第四步add_user方法

第四步:/uc_client/model/user.php:add_user 將用戶注冊(cè)到ucenter返回用戶id

第五步:/source/class/class_member.php,685行 左右,會(huì)把用戶信息寫到common_member表,注冊(cè)結(jié)束.

  1. C::t(‘common_member’)->insert($uid$username$password$email$_G['clientip'], $groupinfo['groupid'], $init_arr); 

登陸流程

第一步:/source/class/class_member.php:on_login 登陸入口,87行左右,調(diào)用userlogin方法如下:

  1. $result = userlogin($_GET['username'], $_GET['password'], $_GET['questionid'], $_GET['answer'], $this->setting['autoidselect'] ? ‘auto’ : $_GET['loginfield'], $_G['clientip']); 

第二步:/source/function/function_member.php: logincheck 72行左右 調(diào)用 logincheck,如下:

  1. if(!($_G['member_loginperm'] = logincheck($_GET['username']))) { 
  2. showmessage(‘login_strike’); 
  3. //開源軟件:Vevb.com 

第三步:/source/function/function_member.php: userlogin 用戶登陸查詢相關(guān)表,第29行-40行左右會(huì)用調(diào)用uc_user_login方法:

  1. if($isuid == 3) { 
  2. if(!strcmp(dintval($username), $username) && getglobal(‘setting/uidlogin’)) { 
  3. $return['ucresult'] = uc_user_login($username$password, 1, 1, $questionid$answer$ip);// uc_client/client.php 
  4. elseif(isemail($username)) { 
  5. $return['ucresult'] = uc_user_login($username$password, 2, 1, $questionid$answer$ip);// uc_client/client.php 
  6. if($return['ucresult'][0] <= 0 && $return['ucresult'][0] != -3) { 
  7. $return['ucresult'] = uc_user_login(addslashes($username), $password, 0, 1, $questionid$answer$ip); 
  8. else { 
  9. $return['ucresult'] = uc_user_login(addslashes($username), $password$isuid, 1, $questionid$answer$ip); 
  10.  

/uc_client/client.php: 包含uc_開頭的全部方法,例uc_user_login

/uc_client/control/user.php: onlogin 根據(jù)條件判斷登陸,114-120 判斷查詢條件查詢出ucenter用戶信息

/uc_client/model/user.php 包含有g(shù)et_user_by_uid,get_user_by_username 等方法 第50行左右查詢common_member表,如下:

$member = getuserbyuid($return['ucresult']['uid'], 1);

回到/source/class/class_member.php文件on_login方法,第95-106 行左右會(huì)根據(jù)條件$result['status']==-1,寫common_member表,并查詢出寫入信息:

  1. C::t(‘common_member’)->insert($uid$result['ucresult']['username'], md5(random(10)), $result['ucresult']['email'], $_G['clientip'], $groupid$init_arr); 
  2. $result['member'] = getuserbyuid($uid); 

ps:以上所有方法都會(huì)先執(zhí)行,/source/class/discuz/discuz_application.php: _init_user,所以如果要自己寫checklogin 可以考慮從_init_user 方法入手,如果與自己的平臺(tái)做bbs的打通.

注冊(cè)可以考慮在第4步做操作,調(diào)用自己平臺(tái)的注冊(cè)接口,注冊(cè)用戶,并將用戶id返回,寫入到ucenter.

/uc_client/model/user.php:add_user 方法內(nèi),登陸打通可以考慮在 第三步調(diào)用uc_user_login 方法前.

1.調(diào)用自己平臺(tái)接口查詢用戶相關(guān)信息

2.查詢ucenter中用戶是否存在

3.如果不存在insert一條數(shù)據(jù)

4.common_member可以寫也可以不寫,如此時(shí)不寫 $result['status']==-1 會(huì)在class_member 95-106 行左右寫入

如果在自己平臺(tái)處于登陸狀態(tài),在bbs也為登陸狀態(tài),則可以考慮從_init_user 方法入手,做登錄判斷.

無法同步登陸需要注意檢查的地方:

1.ucenter中應(yīng)用的配置信息是否完全正確,并與目標(biāo)站后臺(tái)的ucenter接口配置信息一致.

2.如果遇到通信成功,但是一邊能登陸一邊無法同步登陸的情況,請(qǐng)首先檢查 uc_client/data/cache/apps.php中的站點(diǎn)信息是否完全.

3.請(qǐng)注意編碼以及程序的BOM頭導(dǎo)致返回信息亂碼的情況.

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 荣成市| 海林市| 淮滨县| 外汇| 龙川县| 教育| 阿坝县| 广宗县| 黄龙县| 宝清县| 临潭县| 丰都县| 无极县| 东港市| 六安市| 奉节县| 富锦市| 澄城县| 遵义县| 霍邱县| 阿克苏市| 城固县| 宁德市| 寿宁县| 开阳县| 云林县| 南安市| 察雅县| 凉城县| 集安市| 青冈县| 平昌县| 台南县| 类乌齐县| 牟定县| 满洲里市| 乡城县| 云南省| 和硕县| 榆社县| 房山区|