香蕉成人伊视频在线观看|学生小视频国产区|yy女主播啪啪啪视频|麻豆传播媒体APP大全免费版官网|瑜伽牲交AV|国产欧美日韩在线天堂区|白浆精品国产91

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

discuz X2中DIY的第三方C/S擴展

83

主題

-6

回帖

3

粉絲

爐火純青

貢獻
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ù) 去服務端請求配置

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

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

服務端需要返回 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ù)(必需)
* title 為顯示的名稱
* type 為表單類型, 有: text, password, number, textarea, radio, select, mselect, mradio, mcheckbox, calendar;
f、style: 內(nèi)置的顯示樣式(非必需)



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

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



回復

使用道具 舉報

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

本版積分規(guī)則

  • 關注公眾號
  • 有償服務微信
  • 有償服務QQ

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

GMT+8, 2026-5-31 04:41 , Processed in 0.040631 second(s), 11 queries , Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2026 Discuz! Team.

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