Discuz教程网

[插件制作] Discuz X2中DIY的第三方C/S扩展

[复制链接]
authicon dly 发表于 2011-9-4 19:25:53 | 显示全部楼层 |阅读模式
*************************************************
** 本教程基于版本:Discuz! X 2.0                                         **
*************************************************

论坛后台门户第三访模块
添加第三方模块,后台需要填写以下选项

第三方地址: 输入 第三方模块的 URL 地址,第三方返回的内容必须 XML 模块的格式
客户端ID: 此ID由数据源方提供
签名加密方式: 目前支持MD5加密方式,也可以不使用签名,由数据源方提供
通信密钥: 从 URL 地址获得数据时的密钥,如果数据源不需要密钥可以为空。此密钥由数据源方提供


提交的时候程序会使用 import_block 函数 去服务端请求配置

其间 该函数会调用 create_sign_url 函数 生成签名
  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 会将第一个参数 url 参数的数组 $para (包括:clientid、op、charset) 用 ksort 排序
然后 用 http_build_query 函数转义生成 url 的参数 连上后台设置的 通信密钥 进行md5加密后生成的 sign
然后拼接着请求的参数
如charset=gbk&clientid=100000&op=getconfig&sign=ce09add6aaadfcc58f7d6140dc55fa09
如果后台没有设置加密方式 sign 为后台设置的通信密钥

请求的参数与后台设置的 第三方地址 拼成完成的向第三请求的地址
使用dz的 dfsockopen 函数请求第三方服务端

服务端需要返回 xml 有 Title 和 Data 两部分的配置
其中Title分部是固定的且区分大小写:<item id="Title"><![CDATA[Discuz! Block]]></item>
Data分部主要包括5个属性:
a、version: 版本号(必需)
b、name: 模块名(必需)
c、fields: 可显示的字段,在模块样式中使用(必需)
* name 为该字段的显示名称
* formtype 决定编辑单条数据时该字段的显示方式: 类型有: text, textarea, date, title, summary, pic;
* datatype 决定该字段的数据展示,类型有: string, int, date, title, summary, pic;
d、getsetting: 可设置和接收的参数(必需)
* title 为显示的名称
* type 为表单类型, 有: text, password, number, textarea, radio, select, mselect, mradio, mcheckbox, calendar;
f、style: 内置的显示样式(非必需)

xml示例如下:
block_xml_sample.zip (820 Bytes, 下载次数: 4)



上一篇:Discuz X2如何判断当前页面的动作
下一篇:Discuz X2 DIY模板保存后空白的数据挽救与原理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 13:20

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表