Maison > Article > développement back-end > Que dois-je faire si la publication php ne peut pas recevoir de données ?
Solutions pour la publication PHP ne recevant pas de données : 1. Remplacez max_input_vars dans php.ini par 5000 ; 2. Obtenez les données via "$GLOBALS['HTTP_RAW_POST_DATA']".
L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3
1 : PHP ne parvient pas à obtenir certaines données en utilisant le problème POST
Un projet développé en PHP, retour client lors de phase de test Il a dit que les données n'avaient pas été enregistrées avec succès
Et mon test précédent a réussi, mais le problème est réapparu selon les informations du client
Le problème est comme ça
Le client enregistre via le navigateur, mais certaines données ont été enregistrées avec succès, mais certaines données n'ont pas été enregistrées avec succès
Et j'ai découvert grâce à des tests que certaines données dans $_POST n'étaient pas là, mais certaines étaient là
Et file_get_contents("php://input"); obtenir les données, mais parce que les données doivent être traitées et que le code doit être beaucoup modifié
Donc, après y avoir réfléchi, nous devons encore résoudre le problème de $_POST
J'étais aussi très perplexe au début. Le problème que j'ai rencontré auparavant était que tout $_POST ne pouvait pas être obtenu, mais seulement C'est la première fois que je peux obtenir des informations
Puisque $_POST peut soumettre des données, aucune des deux parties des données n'est envoyée en arrière-plan avant la soumission , ou l'arrière-plan ne le reçoit pas
Et la demande en visualisant le navigateur n'a trouvé aucun problème, toutes les données ont été envoyées normalement
Ensuite, cela signifie que l'arrière-plan ne l'a pas reçu
J'ai trouvé lors de mon test, j'ai supprimé manuellement les données soumises, puis je les ai soumises à nouveau
Le backend $_POST peut obtenir toutes les données, puis j'ai cherché sur Internet
et j'ai découvert que les données soumises par $_POST avaient une limite de taille
Ensuite, remplacez max_input_vars dans php.ini par 5000 pour le résoudre parfaitement
Deux : Solution pour que $_POST ne reçoive pas de données frontales en php
Par défaut, la requête frontale le type est Content-Type:application/x-www-form-urlencoded. Utilisez $_POST pour obtenir les données
Si le type de requête frontale est Content-Type: application/json, les données ne peuvent pas être obtenues en utilisant simplement $. _POSTE. (Par exemple, axios de vue.js, le mode par défaut est application/json)
À ce stade, vous pouvez l'obtenir via $GLOBALS['HTTP_RAW_POST_DATA'], puis utiliser json_decode pour le convertir en objet. est le suivant
$mypost = $GLOBALS['HTTP_RAW_POST_DATA']$postdata = json_decode($mypost);$username = $postdata->username;
S'il affiche un index non défini : HTTP_RAW_POST_DATA, alors modifiez simplement le code comme suit.
$mypost = isset($GLOBALS['HTTP_RAW_POST_DATA'])?$GLOBALS['HTTP_RAW_POST_DATA']:file_get_contents("php://input");$postdata = json_decode($mypost);$username = $postdata->username;
Apprentissage recommandé : "Tutoriel vidéo PHP"
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!