Cette page décrit le principe le plus simple possible pour recevoir un fichier JSON via une requête HTTP POST dans une page PHP, puis l’enregistrer tel quel sur le serveur avec un horodatage. Ce mécanisme est typiquement utilisé pour collecter des données envoyées par un script externe (par exemple un script PowerShell), centraliser des résultats, ou conserver des traces d’exécution sans base de données.
Cette version fait le strict minimum : accepte uniquement POST, lit le corps brut, vérifie que c’est du JSON, puis écrit un fichier payload_YYYY-mm-dd_HH-MM-SS.json.
<?php
date_default_timezone_set("Europe/Brussels");
header("Content-Type: application/json; charset=utf-8");
if ($_SERVER["REQUEST_METHOD"] !== "POST") {
http_response_code(405);
echo json_encode(["ok" => false, "error" => "Use POST"]);
exit;
}
$raw = file_get_contents("php://input");
if ($raw === false || trim($raw) === "") {
http_response_code(400);
echo json_encode(["ok" => false, "error" => "Empty body"]);
exit;
}
json_decode($raw);
if (json_last_error() !== JSON_ERROR_NONE) {
http_response_code(400);
echo json_encode(["ok" => false, "error" => "Invalid JSON", "detail" => json_last_error_msg()]);
exit;
}
$dir = __DIR__ . "/data";
if (!is_dir($dir)) {
mkdir($dir, 0777, true);
}
$file = $dir . "/payload_" . date("Y-m-d_H-i-s") . ".json";
if (file_put_contents($file, $raw) === false) {
http_response_code(500);
echo json_encode(["ok" => false, "error" => "Write failed"]);
exit;
}
http_response_code(201);
echo json_encode(["ok" => true, "file" => basename($file)]);
$uri = "https://votre-domaine.tld/ingest.php"
$json = '{"test":true,"time":"' + (Get-Date).ToString("o") + '"}'
Invoke-RestMethod -Uri $uri -Method Post -Body $json -ContentType "application/json"