97久久国产亚洲精品超碰热,成人又色又爽的免费网站,色偷偷女人的天堂a,男女高潮喷水在线观看,国内精品一线二线三线区别在哪里

Discuz! 官方交流社區(qū)

標(biāo)題: discuz X2中DIY的第三方C/S擴(kuò)展 [打印本頁(yè)]

作者: 我是小站長(zhǎng)    時(shí)間: 2019-6-1 16:41
標(biāo)題: discuz X2中DIY的第三方C/S擴(kuò)展
*************************************************
** 本教程基于版本:Discuz! X 2.0                                         **
*************************************************

論壇后臺(tái)門(mén)戶第三訪模塊
添加第三方模塊,后臺(tái)需要填寫(xiě)以下選項(xiàng)

第三方地址: 輸入 第三方模塊的 URL 地址,第三方返回的內(nèi)容必須 XML 模塊的格式
客戶端ID: 此ID由數(shù)據(jù)源方提供
簽名加密方式: 目前支持MD5加密方式,也可以不使用簽名,由數(shù)據(jù)源方提供
通信密鑰: 從 URL 地址獲得數(shù)據(jù)時(shí)的密鑰,如果數(shù)據(jù)源不需要密鑰可以為空。此密鑰由數(shù)據(jù)源方提供


提交的時(shí)候程序會(huì)使用 import_block 函數(shù) 去服務(wù)端請(qǐng)求配置

其間 該函數(shù)會(huì)調(diào)用 create_sign_url 函數(shù) 生成簽名
  1. function create_sign_url($para, $key = '', $signtype = ''){
  2.         ksort($para);
  3.         $url = http_build_query($para);
  4.         if(!empty($signtype) && strtoupper($signtype) == 'MD5') {
  5.                 $sign = md5(urldecode($url).$key);
  6.                 $url = $url.'&sign='.$sign;
  7.         } else {
  8.                 $url = $url.'&sign='.$key;
  9.         }
  10.         return $url;
  11. }
復(fù)制代碼
create_sign_url 會(huì)將第一個(gè)參數(shù) url 參數(shù)的數(shù)組 $para (包括:clientid、op、charset) 用 ksort 排序
然后 用 http_build_query 函數(shù)轉(zhuǎn)義生成 url 的參數(shù) 連上后臺(tái)設(shè)置的 通信密鑰 進(jìn)行md5加密后生成的 sign
然后拼接著請(qǐng)求的參數(shù)
如charset=gbk&clientid=100000&op=getconfig&sign=ce09add6aaadfcc58f7d6140dc55fa09
如果后臺(tái)沒(méi)有設(shè)置加密方式 sign 為后臺(tái)設(shè)置的通信密鑰

請(qǐng)求的參數(shù)與后臺(tái)設(shè)置的 第三方地址 拼成完成的向第三請(qǐng)求的地址
使用dz的 dfsockopen 函數(shù)請(qǐng)求第三方服務(wù)端

服務(wù)端需要返回 xml 有 Title 和 Data 兩部分的配置
其中Title分部是固定的且區(qū)分大小寫(xiě):<item id="Title"><![CDATA[Discuz! Block]]></item>
Data分部主要包括5個(gè)屬性:
a、version: 版本號(hào)(必需)
b、name: 模塊名(必需)
c、fields: 可顯示的字段,在模塊樣式中使用(必需)
* name 為該字段的顯示名稱
* formtype 決定編輯單條數(shù)據(jù)時(shí)該字段的顯示方式: 類(lèi)型有: text, textarea, date, title, summary, pic;
* datatype 決定該字段的數(shù)據(jù)展示,類(lèi)型有: string, int, date, title, summary, pic;
d、getsetting: 可設(shè)置和接收的參數(shù)(必需)
* title 為顯示的名稱
* type 為表單類(lèi)型, 有: text, password, number, textarea, radio, select, mselect, mradio, mcheckbox, calendar;
f、style: 內(nèi)置的顯示樣式(非必需)



前臺(tái)模塊更新 除了向第三方請(qǐng)求數(shù)據(jù)時(shí)除了會(huì)以 POST 方式向第三方服務(wù)端傳遞后臺(tái)設(shè)置的參數(shù)外 還會(huì)以 POST 的方式附加傳遞以下參數(shù):* op=getdata ,此參數(shù)表示客戶端要請(qǐng)求數(shù)據(jù);
* clientid ,客戶端ID(服務(wù)器分配給客戶端的ID);
* op=getdata ,此參數(shù)表示客戶端要請(qǐng)求數(shù)據(jù);
* items ,為用戶指定顯示的模塊數(shù)據(jù)條數(shù);
* bannedids ,為用戶選擇屏蔽某數(shù)據(jù)時(shí)記錄在模塊中的該數(shù)據(jù) id,多個(gè) id 以半角分號(hào)(,)分隔。 應(yīng)該在獲取數(shù)據(jù)時(shí)屏蔽該數(shù)據(jù);
* charset,客戶端的數(shù)據(jù)編碼
* sign ,數(shù)據(jù)簽名,如果服務(wù)器端沒(méi)有設(shè)置通信密鑰則此值為空

第三方服務(wù)端返回?cái)?shù)據(jù)的 data 中應(yīng)該包含 上面配置中可顯示的字段 fields 指定的所有字段。并附加以下字段:* id 標(biāo)志該數(shù)據(jù)的 id,如果用戶屏蔽某數(shù)據(jù)時(shí),會(huì)將該數(shù)據(jù)的 id 以 POST 的方式變量名為 bannedids,多個(gè)id以半角逗號(hào)(,)分隔提交到服務(wù)器端
* picflag 如果有圖片,則該值標(biāo)志圖片的類(lèi)型,0 為 url、1 為本地、2 為 ftp 遠(yuǎn)程;如果圖片是 Discuz! X 系統(tǒng)中的圖片可以情況設(shè)置為 1 或 2,其它情況為 0
需要注意: 除 id,title, url, pic, picflag, summary 幾個(gè)字段外,其它字段需要放到 fields 數(shù)組里。








歡迎光臨 Discuz! 官方交流社區(qū) (http://r615.cn/) Powered by Discuz! X5.0