🗣 Wd提问: PHP源码JSON接口
🤖 Ai回答: 在 PHP 中创建一个 JSON 接口(API),本质上是编写一个 PHP 脚本,接收客户端请求(如 GET/POST),处理数据后以 JSON 格式返回响应。以下是完整示例和最佳实践:
✅ 基础示例:返回简单 JSON 数据
php
<?php
// 设置响应头为 JSON
header('Content-Type: application/json; charset=utf-8');
// 模拟数据
$data = [
'status' = 'success',
'message' = 'Hello from PHP API!',
'timestamp' = date('Y-m-d H:i:s')
];
// 输出 JSON
echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
?
💡 `JSON_UNESCAPED_UNICODE` 避免中文被转义;`JSON_PRETTY_PRINT` 使输出格式美观(调试用)。
🔄 接收参数并返回动态数据
php
<?php
header('Content-Type: application/json; charset=utf-8');
// 获取 GET 参数
$id = $_GET['id'] ?? null;
if (!$id) {
http_response_code(400); // Bad Request
echo json_encode([
'status' = 'error',
'message' = 'Missing required parameter: id'
]);
exit;
}
// 模拟数据库查询
$users = [
1 = ['name' = '张三', 'email' = 'zhang@65.hk'],
2 = ['name' = '李四', 'email' = 'li@65.hk']
];
$user = $users[$id] ?? null;
if (!$user) {
http_response_code(404); // Not Found
echo json_encode([
'status' = 'error',
'message' = User with ID $id not found
]);
} else {
echo json_encode([
'status' = 'success',
'data' = $user
]);
}
?
📦 处理 POST 请求(如表单或 JSON Body)
php
<?php
header('Content-Type: application/json; charset=utf-8');
// 判断是否为 POST 请求
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405); // Method Not Allowed
echo json_encode(['error' = 'Only POST method allowed']);
exit;
}
// 读取原始 POST 数据(用于接收 JSON)
$json = file_get_contents('php://input');
$data = json_decode($json, true);
if (json_last_error() !== JSON_ERROR_NONE) {
http_response_code(400);
echo json_encode(['error' = 'Invalid JSON input']);
exit;
}
// 示例:验证用户名和密码
if (!isset($data['username']) !isset($data['password'])) {
http_response_code(400);
echo json_encode(['error' = 'Username and password are required']);
exit;
}
// 模拟登录逻辑
if ($data['username'] === 'admin' && $data['password'] === '123456') {
echo json_encode([
'status' = 'success',
'message' = 'Login successful',
'token' = bin2hex(random_bytes(32)) // 生成模拟 token
]);
} else {
http_response_code(401);
echo json_encode(['status' = 'error', 'message' = 'Invalid credentials']);
}
?
🔐 安全建议
1、输入验证与过滤:
php
$id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
if (!$id) { /* 报错 */ }
2、防止 SQL 注入 → 使用 PDO + 预处理语句:
php
$stmt = $pdo-prepare(SELECT * FROM users WHERE id = ?);
$stmt-execute([$id]);
3、CORS 支持(跨域请求):
php
header(Access-Control-Allow-Origin: *);
header(Access-Control-Allow-Methods: GET, POST, OPTIONS);
header(Access-Control-Allow-Headers: Content-Type);
4、错误处理:
php
error_reporting(0); // 生产环境关闭错误显示
// 或记录日志
error_log(Error: 、$e-getMessage());
🧪 测试接口
你可以用浏览器访问:
http://localhost/api.php?id=1
或使用 `curl`:
bash
curl -X POST http://localhost/api.php \
-H Content-Type: application/json \
-d '{username:admin,password:123456}'
📁 项目结构建议(进阶)
project/
├── api/
│ ├── index.php 入口文件
│ ├── config.php 数据库配置
│ └── controllers/ 控制器
│ └── UserController.php
└── vendor/ Composer 依赖
🚀 进阶框架推荐
如果你希望构建更复杂的 API,推荐使用现代 PHP 框架:
Laravel(功能强大,生态丰富)
Slim(轻量级 REST API 框架)
Lumen(Laravel 的微框架,适合 API)
✅ 总结
一个标准的 PHP JSON 接口应包含:
1、正确设置 `Content-Type: application/json`
2、使用 `json_encode()` 返回数据
3、合理使用 HTTP 状态码(200, 400, 404, 500 等)
4、输入验证、安全防护、错误处理
5、(可选)支持 CORS、认证机制(JWT/OAuth)
如需根据具体业务(如用户管理、商品列表、支付回调等)定制接口,欢迎提供需求,我可以为你生成完整代码!
📣 商家广告 :
👍
0
👎
IP地址: 216.234.11.118
搜索次数: 0
提问时间: 2025-11-11 04:11:18
🛒 域名购买 :
wc.chat mv8.net lr.gs g-y.cn qppp.com.cn naiwang.com.cn 08.gold te.biz zv.gs b.qh.cn
❓️ 热门提问 :
网站开发用什么语言最适合IaaS 好波兰vps mysql程序allowMultiQueries 河源vps 美国vps免费空间2024 云服务器租用的 vps云区别 云服务器 香港 cn2 云服务器去哪里租 站群301跳转跳出率 豌豆Ai站群搜索引擎系统
🌐 域名评估 :
pufa.cn qher.cn ii.tj.cn su8.he.cn sxyi.cn west.cn mm.hn.cn bb.ha.cn ii.he.cn peft.cn
⛏ 最新挖掘 :
凯里酸汤鱼 贵阳烤脑花 都匀毛尖茶 花溪牛肉粉 贵阳烤生蚝 贵阳烤豆腐 贵阳纸包鱼 贵阳特色菜
🖌 热门作画 :
🤝 关于我们:
豌豆Ai
域名
建站
站群
留痕
推广
评估
源码
开发Ai
工具
日记
价格
加盟
广告
流量
留言
联系
🗨 加入群聊 :
🔗 友情链接 :
贵阳财务软件
豌豆Ai站群搜索引擎系统
ai提问
🧰 站长工具 :Ai工具 whois查询 搜索
📢 温馨提示 :本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
👉 技术支持 :本站由豌豆Ai 提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。