本文目录一览:
- 1、discuz 数据备份
- 2、让Discuz3.2用户数据同步第三方api接口怎么做
- 3、discuz怎么对外提供接口
- 4、想弄个discuz的api接口不知道要怎么弄
discuz 数据备份
1、备份数据库数据
这部比较关键,因为你论坛几乎所有的数据都在这个数据库里面,所以这个备份是必不可少的,下面详细说说备份方法。
第一种方法:也是最简单的备份方法就是利用后台的资料备份来备份,如果是转移空间建议在数据备份数据类型里面选择全部备份,还有一点要注意备份分卷的大小不要超过2048K,如果还是出现问题,请改变分卷的大小.
采用这种方法备份的数据将自动保存在论坛的forumdata目录下,格式为:备份日期_任意代码.sql,备份好后把这些文件下载就完成第一种备份方法了。
优点:方便快捷,适用于数据比较小没有自行添加过数据表的用户
缺点:只能备份论坛默认的数据表,对于自定义的数据表不能备份
第二种方法:其实这种方法也很方便,而且备份的数据更加全,这个方法就是联系你的空间商让他帮你备份然后打包放到你的空间,你自己下载
优点:方便快捷能够备份全部数据,适用于自行添加过许多数据表的用户和数据量比较大的用户
缺点:只适用于收费的虚拟主机
第三种方法:这种方法只使用于独立主机或者用自己电脑做服务器的用户,就是找到mysql目录下的data目录,然后找到于你论坛数据库名称相对应的目录名称,例如:你的论坛数据库名称是bbs,那么你的数据就存放在mysql/data/bbs目录下,依此类推,你首先关闭mysql服务,然后把数据所在目录所有文件备份就完成论坛数据的备份了
优点:最为简单方便
缺点:局限性大,只适用于独立主机用户
2、论坛程序文件及其附件的备份
这个相对于数据库备份更加简单,只要把你论坛目录下的所有目录和文件下载或者拷贝到你要备份的地方就可以了,如果你没有对论坛程序和模板做过很大的改动,那么只要备份attachments(附件目录)和customavatars(用户自定义头像)目录就可以了,如果还需要备份模板那么还要加上一个templates目录就可以了。
二、数据及其程序文件恢复
1、数据库恢复
如果你是采用的第一种方法备份的目录,请先安装一个和你原来使用的论坛版本一致的论坛程序,那么直接把你备份的SQL文件上传到你新服务器的论坛的forumdata目录,然后用这个帖子里面那个恢复数据的工具恢复就可以了,那个工具的使用方法已经在那个工具里面写的很清楚了,如果还有问题请回帖说明,注意用那个文件恢复数据之后,请记得删除那个文件,以免造成安全问题
如果你是第二种方法备份的数据,那么你最好也找你的空间商帮你恢复数据,他们一般会让你把数据打包然后传到你的新服务器上,然后你装好论坛他们就可以帮你恢复了
如果是第三种备份方法那么和第二种类似,直接在你的mysql/data目录下建立一个文件夹,名称要和你的数据库名称一致,然后把你的备份文件拷贝到你新建的那个目录下就可以了,然后安装论坛配置好config.php文件就行了,如果你是准备把你的论坛搬到虚拟主机上,那么你可以把你的数据打包给你空间商,让他们帮你恢复,方法同第二种方法
2、论坛程序及其相关文件的恢复
如果你不需要原论坛的程序及其相关文件,那么你全新安装一个论坛然后用上面的数据恢复方法恢复数据就可以了。
如果你需要保存你原来论坛的程序及其相关文件,那么请先用FTP把你的论坛文件及其相关文件上传到你的新服务器上,配置好config.php文件,最后用上面所述的方法恢复数据就可以了
其实论坛搬家的方法还有很多,例如用phpmyadmin或者其他相关软件备份数据等等,在这里我就不一一阐述了,论坛搬家的首要要求就是细心,做好备份,如果大家对论坛搬家还有问题,可以在这里发贴说明,我们共同探讨:)
DZ论坛搬家、数据转移教程【附在线压缩与解压工具】
特点【数据、程序文件、附件、插件、风格】一次备份不怕丢失
缺点若是大型论坛或附件超大性论坛备份好后下载或上传新服务器就有点慢了
个人经验,此方法比一个一个文件下载或上传要快!用了几年的经验,
刚开始建站的时候光是上传个DZ程序都10分钟左右,用了这方法,才1分钟左右
备份方法:
进入UC后台统一备份总数据:【不论你安装了UCHOME没有都是这个方法】
备份好后用一个打包文件,打包【必须打包成zip压缩包,否则无法解压】然后下载到本机【打包文件“yasuo.php”解压密码“123456”,使用方法:http://你的域名/yasuo.php】
安装方法:
先在新服务器全新安装同版本型号和数据库表前缀(cdb_)必须一致的论坛版本,
单独备份新新服务器的“config.inc.php”后面要用到核对数据库用户名与密码
然后上传你打包下载到本机的备份包,接着解压备份包【解压文件“jieya.php”解压密码“123456”,使用方法:http://你的域名/jieya.php】
然后修改 “config.inc.php”把里面的数据库名/密码 改成你新服务器的数据库名/密码(可以对照干才备份的“config.inc.php”来修改)
然后登陆UC后台进行一次性恢复所有数据!更新缓存,
论坛后台更新缓存,如果安装了UCHOME也进后台更新缓存!
最后核对一下论坛、UC、HOME的密钥,要统一用老服务器的密钥即可!
到此论坛搬家、数据转移 全部完成!你登陆论坛或HOME测试发帖、注册等等问题即可
注意:
打包的时候必须打包成zip压缩包,否则无法解压(此打包/解压工具支持任何空间或免费空间)
此工具可以更改试用密码方法为:用笔记本打开,然后把顶部的代码中的“123456”改成你想要的密码即成!
论坛备份压缩和解压工具下载网址;
;page=1extra=
让Discuz3.2用户数据同步第三方api接口怎么做
第一步:在网站根文件夹建立“1.php”文件,写入以下数据:
?php
define('CHARSET', 'GBK'); //服务器端数据编码
require './source/class/class_xml.php'; //XML格式的文档和array的相互转换的类
error_reporting(7);
$charset = $_GET['charset'] ? $_GET['charset'] : $_POST['charset']; //客户端数据编码
//数据转码
if(strtoupper($charset) != CHARSET) {
foreach($POST as $key = $value) {
$POST[$key] = iconv($charset, CHARSET, $value);
}
foreach($GET as $key = $value) {
$GET[$key] = iconv($charset, CHARSET, $value);
}
}
$data = array('html'='', 'data'=''); //初始化要返回数据
$sign = $_GET['sign'] ? $_GET['sign'] : $_POST['sign']; //获取客户端请求数据的签名
$clientid = $_GET['clientid'] ? $_GET['clientid'] : $_POST['clientid']; //客户端ID
$client = get_client_by_clientid($clientid); //得到客户端的相关信息
if(empty($client)) { //客户端不存在
exit('CLIENT_NOT_EXISTS'); //直接返回失败
}
$datasign = ''; //数据签名
if(!empty($_POST)) {
unset($_POST['sign']); //删除签名参数,此参数不参加签名计算
$datasign = get_sign($_POST, $client['key']); //计算数据的签名
} else {
unset($_GET['sign']); //删除签名参数,此参数不参加签名计算
$datasign = get_sign($_GET, $client['key']); //计算数据的签名
}
if($datasign != $sign) { //签名不正确
exit('SIGN_ERROR'); //输入签名错误
}
if($_POST['op'] == 'getdata') { //判断是否为请求数据列表
$datalist = $data = array();//数据列表
$wherearr = array(); //SQL 条件数组
//获取客户端POST参数
$start = intval($_POST['start']); //起始数据行数
$limit = intval($_POST['items']); //要显示多少条数
$bannedids = addslashes($_POST['bannedids']); //客户端屏蔽的IDS
$param1 = addslashes($_POST['param1']); //数据调用参数1,假设此值要求为string型
$param2 = intval($_POST['param2']); //数据调用参数2,假设此值要求为int型
//处理参数1
if(!empty($param1)){
$wherearr[] = "fieldsparam1='$param1'";
}
//处理参数2
if(!empty($param2)) {
$wherearr[] = "fieldsparam2='$param2'";
}
//处理客户端屏蔽的IDS
if(!empty($bannedids)) {
$banids = explode(',', $bannedids);
$wherearr[] = "csid NOT IN (".implode("','", $banids)."')";
}
$where = !empty($wherearr) ? 'WHERE '.implode(' AND ', $wherearr) : ''; //构造条件
/*数据库相关处理
$query = DB::query('SELECT * FROM '.DB::table('tablename')." $where LIMIT $start, $limit"); //SQL查询
while($value = DB::fetch($query)) {
//此处为数据处理逻辑代码
$data[] = $value;
}
*/
//以下为临时测试数据,正式环境请根据自己的业务做相关调整
$url = '';
$data = range($start, $start + $limit);//构造临时的假数据
foreach($data as $value) {
//需要注意: 除 id, title, url, pic, picflag, summary 几个字段外,其它字段需要放到 fields 数组里。
$datalist[] = array(
'id' = $value,
'title' = 'xml_block_title'.$value, //标题
'url' = $url.'xml_server.php?csid='.$value, //链接地址
'pic' = $url.'/data/attachment/photo.gif', //图片地址
'picflag' = '0', //0为url 1为本地 2 为ftp远程;如果图片是DX系统中的图片可以情况设置为1或2,其它情况为0
'summary' = '', //简介
'fields' = array( //配置规范中fields中指定的字段
'author' = 'xml_user'.$value,
'authorid' = $value,
'field1' = 'field1value'.$value,
'field2' = 'field2value'.$value
)
);
}
$data['data'] = $datalist;
//如果要返回HTML代码,可直接使用以下代码
//$data['html'] = 'HTML CODE';
$xml = array2xml($data); //转换为XML文档
} else if($_GET['op'] == 'getconfig') {
$xml = file_get_contents('block_xml_sample.xml');//block_xml_sample.xml文件中的内容为 配置规范XML文档示例 的内容
} else {
$xml = 'NO_OPERATION';
}
ob_end_clean();
@header("Expires: -1");
@header("Cache-Control: no-store, private, post-check=0, pre-check=0, max-age=0", FALSE);
@header("Pragma: no-cache");
header("Content-type: text/xml");
echo $xml;
exit();
/**
* 获得客户端信息
* @param $clientid
* @return array 客户端信息数组
*/
function get_client_by_clientid($clientid){
$client = array();
$clientid = intval($clientid);
if($clientid) {
/*数据库相关处理
$client = DB::fetch_first('SELECT * FROM '.DB::table('clienttable')." clientid='$clientid'"); //SQL查询
*/
//以下为临时测试数据,正式环境请根据自己的业务做相关调整
//模拟数据库
$CLIENTSDB = array(
'100000' = array(
'clientid' = '100000',
'key' = '*654%#(asd94',
),
'200000' = array(
'clientid' = '200000',
'key' = '1#9!(@@34#94',
),
'300000' = array(
'clientid' = '300000',
'key' = '7$@^8^$7as89',
),
'400000' = array(
'clientid' = '400000',
'key' = '23@#86^%432',
),
);
$client = isset($CLIENTSDB[$clientid]) ? $CLIENTSDB[$clientid] : array();
}
return $client;
}
/**
* 生成签名
* @param array $para 参数数组
* @param string $key 加密密钥
* @return string 签名
*/
function get_sign($para, $key = ''){
ksort($para);
$signarr = array();
foreach($para as $k = $v) {
$signarr[] = $k.'='.$v;
}
$sign = implode('', $signarr);
$sign = md5($sign.$key);
return $sign;
}
?
注意:不是网站记录的URL来调试的时候,会出现“Access Denied”,那是网站防止文件外部打开的标志,进入“./source/class/class_xml.php”暂时关闭开头的二行:
if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
exit('Access Denied');}
特别注意:99行时候的“$xml = file_get_contents('block_xml_sample.xml');//block_xml_sample.xml文件中的内容为 配置规范XML文档示例 的内容”;就是这个文件造成很多人安装第三方插件不成功的。这个文件改名称的同时记得要修改1.php的99行;
特别注意文件block_xml_sample.xml中的“item id="name"![CDATA[C/S 数据类]]/item”中间的“C/S 数据类”就是模块名称;有的时候如“item id="version"![CDATA[X1.5]]/item”版本号不对也会报错;修改为网站的版本即可。
第二步:建立“block_xml_sample.xml”文件,写入如下数据:
?xml version="1.0" encoding="ISO-8859-1"?
root
item id="Title"![CDATA[Discuz! Block]]/item
item id="Data"
item id="version"![CDATA[X1.5]]/item
item id="name"![CDATA[C/S 数据类]]/item
item id="fields"
item id="url"
item id="name"![CDATA[链接地址]]/item
item id="formtype"![CDATA[text]]/item
item id="datatype"![CDATA[string]]/item
/item
item id="title"
item id="name"![CDATA[标题]]/item
item id="formtype"![CDATA[title]]/item
item id="datatype"![CDATA[title]]/item
/item
item id="pic"
item id="name"![CDATA[图片]]/item
item id="formtype"![CDATA[pic]]/item
item id="datatype"![CDATA[pic]]/item
/item
item id="summary"
item id="name"![CDATA[简介]]/item
item id="formtype"![CDATA[summary]]/item
item id="datatype"![CDATA[summary]]/item
/item
item id="author"
item id="name"![CDATA[作者]]/item
item id="formtype"![CDATA[text]]/item
item id="datatype"![CDATA[text]]/item
/item
item id="authorid"
item id="name"![CDATA[作者ID]]/item
item id="formtype"![CDATA[text]]/item
item id="datatype"![CDATA[int]]/item
/item
item id="field1"
item id="name"![CDATA[字段1]]/item
item id="formtype"![CDATA[text]]/item
item id="datatype"![CDATA[string]]/item
/item
item id="field2"
item id="name"![CDATA[字段2]]/item
item id="formtype"![CDATA[text]]/item
item id="datatype"![CDATA[string]]/item
/item
/item
item id="getsetting"
item id="param1"
item id="title"![CDATA[数据调用参数1]]/item
item id="type"![CDATA[text]]/item
item id="default"![CDATA[]]/item
/item
item id="param2"
item id="title"![CDATA[数据调用参数2]]/item
item id="type"![CDATA[mcheckbox]]/item
item id="value"
item id="0"
item id="0"![CDATA[1]]/item
item id="1"![CDATA[选项1]]/item
/item
item id="1"
item id="0"![CDATA[2]]/item
item id="1"![CDATA[选项2]]/item
/item
/item
item id="default"![CDATA[1]]/item
/item
item id="titlelength"
item id="title"![CDATA[标题长度]]/item
item id="type"![CDATA[text]]/item
item id="default"![CDATA[40]]/item
/item
item id="summarylength"
item id="title"![CDATA[简介长度]]/item
item id="type"![CDATA[text]]/item
item id="default"![CDATA[80]]/item
/item
item id="start"
item id="title"![CDATA[起始数据行数]]/item
item id="type"![CDATA[text]]/item
item id="default"![CDATA[0]]/item
/item
/item
item id="style"
item id="0"
item id="name"![CDATA[模板名称]]/item
item id="template"![CDATA[div class="module cl xl xl1"ul[loop]liema href="home.php?uid={authorid}"FONT COLOR="RED"{author}/FONT/a/ema href="{url}"{title}/a/li[/loop]/ul/div]]/item
/item
item id="1"
item id="name"![CDATA[模板名称红色]]/item
item id="template"![CDATA[div class="module cl xl xl1"ul[loop]liemfont color="red"a href="home.php?uid={authorid}"{author}/a/font/ema href="{url}"{title}/a/li[/loop]/ul/div]]/item
/item
/item
/item
/root
第三步:建立第三方模块
管理平台 》 门户 》 第三方模块 》 添加:
第三方地址:url/1.php
客户短ID:200000 见1.php的133行
签名加密方式:MD5签名
通信密匙:1#9!(@@34#94
点击提交,完成模块建立工作。
第四步:前台页面调用:
DIY网页 》 DIY 》 高级模式 》 模块 》 第三方类
是不是看到刚刚建立的模块了。
选择调用即可。
第五步:扩展读取任一(包括外部)网页HTML代码数据,新建一个网页“ee.htm”,数据规范如下:
?xml version="1.0" encoding="ISO-8859-1"?
root
item id="html"![CDATA[]]/item
item id="data"
item id="0"
item id="id"![CDATA[14]]/item
item id="title"![CDATA[xml_block_title14]]/item
item id="url"![CDATA[xml_server.php]]/item
item id="pic"![CDATA[nophoto.gif]]/item
item id="picflag"![CDATA[1]]/item
item id="summary"![CDATA[]]/item
item id="fields"
item id="author"![CDATA[xml_user14]]/item
item id="authorid"![CDATA[14]]/item
item id="field1"![CDATA[field1value14]]/item
item id="field2"![CDATA[field2value14]]/item
/item
/item
item id="1"
item id="id"![CDATA[15]]/item
item id="title"![CDATA[xml_block_title15]]/item
item id="url"![CDATA[xml_server.php]]/item
item id="pic"![CDATA[nophoto.gif]]/item
item id="picflag"![CDATA[1]]/item
item id="summary"![CDATA[]]/item
item id="fields"
item id="author"![CDATA[xml_user15]]/item
item id="authorid"![CDATA[15]]/item
item id="field1"![CDATA[field1value15]]/item
item id="field2"![CDATA[field2value15]]/item
/item
/item
/item
/root
第六步:读取外部网页(ee.htm)时1.PHP的代码:
适合格式固化的网页使用,安全则自己去加上。
?php
define('CHARSET', 'GBK'); //服务器端数据编码
if($_POST['op'] == 'getdata') { //判断是否为请求数据列表
$xml = file_get_contents('ee.htm');//读取网页数据 如下传递参数另..
} else if($_GET['op'] == 'getconfig') {
$xml = file_get_contents('block_xml_sample.xml'); //安装时候需要调用的网页;为配置规范XML文档示例
} else {
$xml = 'NO_OPERATION';
}
ob_end_clean();
@header("Expires: -1");
@header("Cache-Control: no-store, private, post-check=0, pre-check=0, max-age=0", FALSE);
@header("Pragma: no-cache");
header("Content-type: text/xml");
echo $xml;
exit();
?
以上的步骤就解决了DZ可以与任一网站数据共享的问题
discuz怎么对外提供接口
插件或独立的api都可以,你可以看看api\trade里的文件,最好的例子,这些是支付相关的回调接口
里面的大部分接口不是提供第三方应用调用的。除了JS调用外,其余大多数是腾讯接口
从 Discuz! 4.0.0 RC4 版本开始,Discuz! 内嵌了一个独特的 Passport(通行证) 接口,利用此接口,用户将很容易将论坛与其他应用程序整合,而实现统一登录与退出、用户数据共享、积分同步等功能。可以整合的应用程序包括内容管理系统(CMS)、商城系统、游戏系统等等,如您对这方面功能有兴趣或有需求,请继续阅读本文档。
Discuz! Passport 的优点
Discuz! Passport 系统使用了 Discuz! 独有的技术,并不等同于以往使用过的一些方法,与传统的实现方式相比,具备(不限于)以下优势:
基于私有密匙的低相关性可逆加密算法,配合 MD5 校检码技术,使得暴力破解或伪造几乎不可能。
应用程序可与论坛放置于不同的服务器及不同的域名下。可基于不同操作系统、不同程序语言和不同数据库平台,具备真正的平台无关性。
不需要任何形式的数据库连接、或强制把两套应用程序的数据放在同一数据库甚至同一数据表中。论坛与应用程序都有各自的用户数据表,只是在需要时进行无缝同步操作。
对应用程序的代码改动简便易行,可最快速的完成应用程序与论坛间的整合。
Discuz! Passport 的局限
您在开始利用 Discuz! Passport 进行二次开发时,需要了解这个系统的局限性,以对未来的工作进行正确的评估与安排。
只能工作在用户密码不加密、可逆加密或 MD5 加密的情况下,否则论坛后台无法登录。
只能与一种应用程序关联,即二方关联。不能实现三方关联或与更多的应用程序进行关联。
应用程序需具有独立的注册、登录、退出页面和链接,否则需要自行修改论坛中的相应表单或程序。
由于论坛的注册人数可能很多,例如百万级以上,且应用程序和论坛间的用户数据是同步的,因此要求应用程序能够稳定的负载大量用户的访问。
想弄个discuz的api接口不知道要怎么弄
API接口就是一个帖子的接口嘛 进入后台管理 门户 模块管理 数据调用 外部调用 然后把弹出的API复制 添加到你想要网站的HTML中 当然不美观 CSS要改 怎么改就不说了