Maison >développement back-end >Problème PHP >Que dois-je faire si la publication php ne peut pas recevoir de données ?

Que dois-je faire si la publication php ne peut pas recevoir de données ?

藏色散人
藏色散人original
2021-10-15 10:05:185770parcourir

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']".

Que dois-je faire si la publication php ne peut pas recevoir de données ?

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!

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