<?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