你知唔知我系靓仔
PHP接收webhook
php接受传递的webhook数据
在做自动化的时候希望将多组服务器的数据放在一起统计,此时使用webhook传递较为方便。
很简单的代码,不使用参数则默认保存到webhook.json,提供了参数则按参数名保存到json中
POST提交即可 https://webhook/webhook.php?project=openai
<?php
// 如果是OPTIONS请求,直接返回成功的状态码和CORS头
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST');
header('Access-Control-Allow-Headers: Content-Type');
header('HTTP/1.1 200 OK');
exit;
}
// 设置CORS头
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST');
header('Access-Control-Allow-Headers: Content-Type');
header('Content-Type: application/json');
// 确保这个脚本只能处理 POST 请求
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// 从 POST 请求中获取原始数据
$webhookData = file_get_contents('php://input');
// 获取传入的时间戳和 IP 地址
$timestamp = date('Y-m-d H:i:s'); // 当前时间戳
$ip = $_SERVER['REMOTE_ADDR']; // 客户端 IP 地址
// 获取参数并构建文件名
$filename = isset($_GET['project']) ? $_GET['project'] . '.json' : 'webhook.json';
// 构建新数据的数组
$newData = [
'timestamp' => $timestamp,
'ip' => $ip,
'webhook_data' => json_decode($webhookData, true) // 如果是 JSON 数据,保存解码后的数据
];
// 读取已有数据或创建一个新数组
$existingData = file_exists($filename) ? json_decode(file_get_contents($filename), true) : [];
// 将新数据追加到现有数组中
$existingData[] = $newData;
$jsonData = json_encode($existingData, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
if (file_put_contents($filename, $jsonData) !== false) {
echo json_encode(['message' => "信息已成功追加到 $filename 文件中。"]);
} else {
echo json_encode(['error' => "追加信息到 $filename 文件失败。"]);
}
} else {
http_response_code(405);
echo json_encode(['error' => "错误:仅接受 POST 请求。"]);
}
?>
payload
import requests
import json
webhook_data = {
"key1": "value1",
"key2": "value2"
}
url = "https://webhook/webhook.php?project=1"
response = requests.post(url, data=json.dumps(webhook_data))
print(response.text)