307 votes

PHP "php://input" vs $_POST

On m'a demandé d'utiliser la méthode php://input au lieu de $_POST lors de l'interaction avec les demandes Ajax de JQuery. Ce que je ne comprends pas, ce sont les avantages d'utiliser cette méthode par rapport à la méthode globale de $_POST o $_GET .

5 votes

J'avais l'habitude d'utiliser des "hacks" pour recevoir des appels ajax du côté PHP avant de tomber sur cet article et de lire ses réponses géniales ! Pour les autres personnes ayant le même problème à l'avenir, j'espère que les moteurs de recherche liront aussi mon commentaire ! :)

0 votes

Vous n'auriez besoin d'utiliser php://input que si votre requête AJAX jQuery envoyait du JSON, au lieu de paires clé/valeur codées par URL. Par défaut, c'est ce que fait jQuery. Si c'est le cas (vos données sont en JSON), alors oui, vous devez utiliser php://input .

-1voto

Danilo Rodas Points 1
if (strtoupper($_SERVER['REQUEST_METHOD']) != 'POST') {
  throw new Exception('Only POST requests are allowed');
}

// Make sure Content-Type is application/json 
$content_type = isset($_SERVER['CONTENT_TYPE']) ? $_SERVER['CONTENT_TYPE'] : '';
if (stripos($content_type, 'application/json') === false) {
  throw new Exception('Content-Type must be application/json');
}

// Read the input stream
$body = file_get_contents("php://input");

// Decode the JSON object
$object = json_decode($body, true);

-5voto

Exemple simple d'utilisation

 <?php  
     if(!isset($_POST) || empty($_POST)) { 
     ?> 
        <form name="form1" method="post" action=""> 
          <input type="text" name="textfield"><br /> 
          <input type="submit" name="Submit" value="submit"> 
        </form> 
   <?php  
        } else { 
        $example = file_get_contents("php://input");
        echo $example;  }  
   ?>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X