久久久久av_欧美日韩一区二区在线_国产精品三区四区_日韩中字在线

返回列表 發(fā)帖
查看: 2562|回復(fù): 0

discuz X2中DIY的第三方C/S擴(kuò)展

83

主題

-6

回帖

329

積分

爐火純青

貢獻(xiàn)
2 點
金幣
241 個
樓主
發(fā)表于 2019-6-1 16:41:46 | 只看樓主 |倒序瀏覽 |閱讀模式
*************************************************
** 本教程基于版本:Discuz! X 2.0                                         **
*************************************************

論壇后臺門戶第三訪模塊
添加第三方模塊,后臺需要填寫以下選項

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


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

其間 該函數(shù)會調(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 會將第一個參數(shù) url 參數(shù)的數(shù)組 $para (包括:clientid、op、charset) 用 ksort 排序
然后 用 http_build_query 函數(shù)轉(zhuǎn)義生成 url 的參數(shù) 連上后臺設(shè)置的 通信密鑰 進(jìn)行md5加密后生成的 sign
然后拼接著請求的參數(shù)
如charset=gbk&clientid=100000&op=getconfig&sign=ce09add6aaadfcc58f7d6140dc55fa09
如果后臺沒有設(shè)置加密方式 sign 為后臺設(shè)置的通信密鑰

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

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



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

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



回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

  • 關(guān)注公眾號
  • 有償服務(wù)微信
  • 有償服務(wù)QQ

手機版|小黑屋|Discuz! 官方交流社區(qū) ( 皖I(lǐng)CP備16010102號 |皖公網(wǎng)安備34010302002376號 )|網(wǎng)站地圖|star

GMT+8, 2025-9-18 17:26 , Processed in 0.054662 second(s), 22 queries .

Powered by Discuz! W1.0 Licensed

Copyright © 2001-2025 Discuz! Team.

關(guān)燈 在本版發(fā)帖
有償服務(wù)QQ
有償服務(wù)微信
返回頂部
快速回復(fù) 返回頂部 返回列表