码桶
发现社区成员的开源项目
api.php2.5 KB
<?php
session_start();
header('Content-Type: application/json; charset=utf-8');
$dataFile = __DIR__ . '/data/domains.json';
// 读取JSON数据
function readData($file) {
if (!file_exists($file)) return [];
$json = file_get_contents($file);
return json_decode($json, true) ?: [];
}
// 写入JSON数据
function writeData($file, $data) {
file_put_contents($file, json_encode(array_values($data), JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT), LOCK_EX);
}
// 登录校验
function checkAuth() {
if (!isset($_SESSION['is_admin']) || $_SESSION['is_admin'] !== true) {
echo json_encode(['status' => false, 'error' => '未授权访问']);
exit;
}
}
$action = $_GET['action'] ?? '';
// 退出登录
if ($action === 'logout') {
session_destroy();
echo json_encode(['status' => true]);
exit;
}
// 获取列表 (公开接口,访客也可读取)
if ($action === 'list') {
$domains = readData($dataFile);
echo json_encode(['status' => true, 'result' => $domains]);
exit;
}
// 以下操作需要权限
checkAuth();
$method = $_SERVER['REQUEST_METHOD'];
if ($method === 'POST') {
$input = json_decode(file_get_contents('php://input'), true);
$action = $input['action'] ?? '';
$domains = readData($dataFile);
if ($action === 'add') {
$newDomain = [
'name' => $input['name'],
'registrar' => $input['registrar'],
'registrarUrl' => $input['registrarUrl'],
'meaning' => $input['meaning']
];
$domains[] = $newDomain;
writeData($dataFile, $domains);
echo json_encode(['status' => true, 'result' => $domains]);
}
elseif ($action === 'edit') {
$originalName = $input['originalName'];
foreach ($domains as $key => $domain) {
if ($domain['name'] === $originalName) {
$domains[$key] = [
'name' => $input['name'],
'registrar' => $input['registrar'],
'registrarUrl' => $input['registrarUrl'],
'meaning' => $input['meaning']
];
break;
}
}
writeData($dataFile, $domains);
echo json_encode(['status' => true, 'result' => $domains]);
}
elseif ($action === 'delete') {
$name = $input['name'];
$domains = array_filter($domains, function($d) use ($name) {
return $d['name'] !== $name;
});
writeData($dataFile, $domains);
echo json_encode(['status' => true, 'result' => $domains]);
}
}