Maison >développement back-end >tutoriel php >Comment accéder au corps de la requête JSON POST en PHP ?

Comment accéder au corps de la requête JSON POST en PHP ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-27 06:48:17175parcourir

How to Access JSON POST Request Body in PHP?

Comment acquérir le corps d'une requête POST au format JSON en PHP ?

Lors de la soumission de données JSON au format POST à ​​une page PHP, l'accès à sa valeur peut semble difficile, car var_dump($_POST); renvoie un tableau vide. Pour récupérer la charge utile JSON, un flux d'entrée spécial est requis.

Utilisation de php://input ou STDIN

Pour accéder au corps brut de l'entité d'une requête POST :

$entityBody = file_get_contents('php://input');

Alternativement, on peut utiliser STDIN :

$entityBody = stream_get_contents(STDIN);

php://input Considérations

  • php://input est un flux en lecture seule.
  • Il devrait être utilisé à la place de $HTTP_RAW_POST_DATA car il est plus fiable et ne dépend pas de php.ini directives.
  • Php://input n'est pas pris en charge pour les requêtes enctype="multipart/form-data".

Préserver la lisibilité de php://input

Puisque php://input n'est pas consultable, il ne peut être lu qu'une seule fois. Pour préserver le flux d'entrée :

function detectRequestBody() {
    $rawInput = fopen('php://input', 'r');
    $tempStream = fopen('php://temp', 'r+');
    stream_copy_to_stream($rawInput, $tempStream);
    rewind($tempStream);

    return $tempStream;
}

Gestion des requêtes multipart/form-data

Pour les requêtes multipart/form-data, la charge utile JSON est disponible directement dans le $_POST superglobal.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn