DISCUZ X DIY的模板数据在哪个文件夹?

DISCUZ X DIY的模板数据在哪个文件夹?,第1张

恢复dede数据

3、在无忧php空间用EmpireBa恢复数据需要50秒左右,速度相当的快。恢复数据后,请登录dede管理后台,重新生成一下网页。检查首页无乱码,数据库表无乱码,织梦网站管理系统(dedecms)utf8成功转换gbk。

Dede首页无乱码

Mysql数据表无乱码:

4、转换成功后的小错误,由于dede默认的utf8和gbk版本的差别,在转换成功后,“图文资讯”和“首页幻灯片”图片丢失,丢失的图片重新上传一下就OK!整个过程无报错,显示正常

本文使用的是dede默认的模板,所以在转换的时候没有改动dede的模板文件,如果你的网站对DEDE的一些文件没有改动,直接按照我的方法就可以成功转换。如果有改动的文件,请将你改动的文件转换为gbk编码。用Editplus 编辑器将站点文件中的utf8转换为gbk编码。重点是dede模板文件编码的转换,细心的用Editplus 编辑器修改,完毕后,上传覆盖即可。也可以用另外一个工具转换模板编码

首先说明本人菜鸟一个,此贴旨在交流经验。

国内合租空间到期了,由于外国空间有便宜和不用备案的好处,所以转向美国空间,以前网站用的是gbk编码,现转为utf8,下面说说经验:

1、备份原网站模板和数据库,下载到本地电脑上用convertz(见附件)将编码转换成utf8;(convertz用法在此不详述了,网上很多资料,且此软件使用本来就很简单)

2、在新的空间安装好dede;

3、上传备份好的模板和数据库;

4、恢复数据库,重新生成所有数据就一切OK了。

转换过程中需要注意的是:

1、数据库中被份的数据表备份文件tables_struct_xxxxxxxxxxx.txt中的gbk全部要替换成utf8(utf8中间没有“-”)。

2、 备份中的模板中的<meta http-equiv="Content-Type" content="text/htmlcharset=gbk" />要全部替换成<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8">(utf-8中间有“-”)

几乎可以断定“60 7d 20 ”这三个字节不是直接的汉字

这3个字节都在ascii有效码点上,是一个`号,一个}和一个空格"

中日韩任何兼容ascii码的编码都不可能使用。排除中日韩台传统编码

而也不可能是utf16,以最少2个字节为码点。排除各种unicode。

在未知你怎么获得这个字节数据之前,猜测可能

可能1、被转码变形过的数据,比如压缩、加密。

可能2、根本就看错了地方,取错了3个中文对应字节。

第一步:在网站根文件夹建立“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 = 'http://www.xxx.com/'

$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^%4&32',

),

)

$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]<li><em><a href="home.php?uid={authorid}"><FONT COLOR="RED">{author}</FONT></a></em><a 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]<li><em><font color="red"><a href="home.php?uid={authorid}">{author}</a></font></em><a 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可以与任一网站数据共享的问题


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9582439.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存