chaihongjun.me

dedecms织梦系统全站内容json格式输出

<?php
$cfg_NotPrintHead = false;
header("Content-Type: text/json; charset=utf-8");
include_once (dirname(__FILE__)."/include/common.inc.php");
error_reporting(E_ALL || ~E_NOTICE);
require_once(DEDEINC.'/json.class.php');
// API:  https://chaihongjun.me/json.php?id=xxx
$params=$_GET["id"]; //获取传递过来的参数id
$query_string = $_SERVER['QUERY_STRING'];
if($query_string==='') {
// 默认查询全部文章  
$dsql->SetQuery("select arc.id,arc.typeid,arc.title,arc.shorttitle,arc.pubdate,arc.senddate,arc.keywords,arc.description,tp.typedir,tp.typename from chj_archives arc left join chj_arctype tp on arc.typeid=tp.id where arc.typeid not in (29) order by arc.pubdate desc");
}
else {
// 针对特定ID文章查询 
// 排除不想查询的栏目文章
$dsql->SetQuery("select art.aid,arc.title,arc.shorttitle,arc.typeid,tp.typename,arc.pubdate,arc.senddate,arc.keywords,arc.description,art.body from chj_addonarticle art left join chj_archives arc on art.aid=arc.id left join chj_arctype tp on tp.id=arc.typeid  where arc.typeid not in (29) and art.aid = ".$params." order by arc.pubdate desc");
}
$dsql->Execute('me');
while($row = $dsql->GetArray('me')){
    $posts[] = $row;
}
 
$json = new Services_JSON(JSON_UNESCAPED_UNICODE);
 
$arr = $json->encode($posts,JSON_UNESCAPED_UNICODE);
 
echo "{".'"posts"'.":".$arr."}";
?>

将以上代码写入一个文件比如api.php,然后将这个文件放到网站的跟目录,如果不放在根目录,则代码内引入数据库连接的文件的路径就需要对应修改。

然后,就可以直接在浏览器中访问这个文件了。

以上如果直接访问这个文件,则可以输出全站的文章信息:

https://chaihongjun.me/api.php

如果想查询文章ID为1的内容,则可以

https://chaihongjun.me/api.php?id=1

当然,有可能遇到Safe Alert Request Error step 2这样的报错信息,这个时候只需要修改/include/dedesql.class.php文件,将

 $this->safeCheck = TRUE改成 $this->safeCheck = FALSE,关闭SQL注入检测即可,这个方法最简单暴力,但是安全系数低下。另外一种方式请参考:

https://blog.csdn.net/egouo/article/details/83803902

知识共享许可协议本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。作者:柴宏俊»