帝国CMS可通过自定义PHP文件结合其数据库类实现JSON接口。创建api.php引入核心文件,使用$empire类查询数据,输出标准JSON格式,并添加权限验证与参数过滤确保安全。

帝国CMS本身没有内置标准的数据接口功能,但可以通过自定义PHP文件结合其数据库操作类来实现JSON数据输出,满足前后端分离或外部系统调用的需求。
1. 创建自定义API接口文件
在网站根目录或指定目录下创建一个PHP文件,例如 api.php,用于处理数据请求并返回JSON格式数据。
基本结构如下:
query("SELECT id, title, newstime, titleurl FROM {$dbtbpre}ecms_news ORDER BY newstime DESC LIMIT 10");
$data = array();
while ($r = $empire->fetch($sql)) {
$data[] = array(
'id' => (int)$r['id'],
'title' => htmlspecialchars($r['title']),
'newstime' => (int)$r['newstime'],
'url' => $r['titleurl']
);
}
// 输出JSON数据
echo json_encode(array('code' => 0, 'msg' => 'success', 'data' => $data), JSON_UNESCAPED_UNICODE);
// 释放资源
$empire->free($sql);
db_close();
?>
2. 安全性与参数控制
实际使用中应加入访问权限控制和输入验证,避免直接暴露数据库。
- 添加token验证或IP限制,防止未授权访问
- 对GET/POST参数进行过滤,如分页、栏目ID等
- 使用 $empire->real_escape_string() 防止SQL注入
3. 支持条件查询(示例)
可通过URL传参实现动态查询,例如:
// 获取栏目ID参数
$classid = (int)$_GET['classid'] ?? 0;
$limit = (int)$_GET['limit'] ?? 10;
$where = '';
if ($classid > 0 && in_array($classid, $class_r)) {
$where = " WHERE classid='$classid'";
}
$sql = $empire->query("SELECT id, title, newstime, titleurl FROM {$dbtbpre}ecms_news $where ORDER BY newstime DESC LIMIT $limit");
4. 返回标准JSON格式
建议统一返回结构,便于前端解析:
{
"code": 0,
"msg": "success",
"data": [
{
"id": 123,
"title": "新闻标题",
"newstime": 1700000000,
"url": "/news/123.html"
}
]
}
错误时可返回:
{"code": 1, "msg": "参数错误", "data": []}
基本上就这些。通过手动构建接口文件,帝国CMS可以灵活输出JSON数据,关键在于引入核心文件、安全查询和规范输出格式。










