Maison >développement back-end >tutoriel php >Comment accéder correctement aux données JSON à partir des requêtes PHP POST ?

Comment accéder correctement aux données JSON à partir des requêtes PHP POST ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-23 17:26:10670parcourir

How to Properly Access JSON Data from PHP POST Requests?

Comment extraire des données JSON d'une requête PHP POST

Lors de la soumission de données JSON à un script PHP via une requête POST, accéder au corps peut prêter à confusion. En utilisant var_dump($_POST); renverra un tableau vide.

Solution : Utilisation de php://input

Pour accéder au corps de la requête, PHP fournit php://input :

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

Ce flux contient les données brutes POST. Vous pouvez également utiliser stream_get_contents(STDIN) car STDIN est un alias pour php://input.

注意事项 :

  • php://input est non consultable, il ne peut donc être lu qu'une seule fois.
  • Pour les grands ensembles de données, pensez le mettre en mémoire tampon avec un flux temporaire, tel que :
function detectRequestBody() {
    $rawInput = fopen('php://input', 'r');
    $tempStream = fopen('php://temp', 'r+');
    stream_copy_to_stream($rawInput, $tempStream);
    rewind($tempStream);

    return $tempStream;
}

Limitations :

php://input n'est pas disponible pour les requêtes avec Content-Type : multipart/form-data, car PHP gère les données en plusieurs parties nativement.

Exemple :

Pour accéder à l'objet JSON {a:1} dans votre code PHP, utilisez :

$json = json_decode(file_get_contents('php://input'));
echo $json->a; // 1

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