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
.
Réponses
Trop de publicités?
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);
Dostonbek Oripjonov
Points
981
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; }
?>
- Réponses précédentes
- Plus de réponses
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
.