Home > Article > Backend Development > What should I do if php post cannot receive data?
Solution to the problem that php post cannot receive data: 1. Change max_input_vars in php.ini to 5000; 2. Obtain data through "$GLOBALS['HTTP_RAW_POST_DATA']".
The operating environment of this article: windows7 system, PHP version 7.1, DELL G3 computer
1: PHP cannot be obtained using POST Some data problems
A project developed using PHP. During the testing phase, the customer reported that the data was not saved successfully.
My previous test passed, but according to the customer’s information, the data was not saved successfully. Reproduced the problem
The problem is like this
The customer saves through the browser, but some data has been saved successfully, but some data has not been saved successfully
And I Through testing, it was found that some data in $_POST is not available, but some is.
And file_get_contents("php://input"); can also obtain data in this way, but because the data needs to be processed, adding The above code requires a lot of changes
So after thinking about it, I still need to solve the problem of $_POST
I was also very confused at the beginning. The problem I encountered before was that all $_POST could not be obtained. But it is the first time that I can only obtain part of the information.
Since $_POST can submit data, either part of the data was not sent to the background before submission, or the background did not receive it
No problem was found by checking the browser's request. All data was sent normally
Then it means that the background did not obtain it
During my test, I found that I manually deleted the submitted data, and then submitted
Backend $_POST to get all the data, and then searched on the Internet.
I just discovered that the data submitted by $_POST has a size limit
Then change the max_input_vars in php.ini to 5000 to solve it perfectly
2: Solution to the problem that $_POST in php cannot receive front-end data
By default, the front-end request type is Content-Type:application/x- www-form-urlencoded, use $_POST to get the data.
If the front-end request type is Content-Type:application/json, you cannot get the data just using $_POST. (For example, axios of vue.js, the default mode is application/json)
At this time, you can obtain it through $GLOBALS['HTTP_RAW_POST_DATA'], and then use json_decode to convert it into an object. The example is as follows
$mypost = $GLOBALS['HTTP_RAW_POST_DATA']$postdata = json_decode($mypost);$username = $postdata->username;
If it prompts Undefined index: HTTP_RAW_POST_DATA, then change the code to the following.
$mypost = isset($GLOBALS['HTTP_RAW_POST_DATA'])?$GLOBALS['HTTP_RAW_POST_DATA']:file_get_contents("php://input");$postdata = json_decode($mypost);$username = $postdata->username;
Recommended learning: "PHP Video Tutorial"
The above is the detailed content of What should I do if php post cannot receive data?. For more information, please follow other related articles on the PHP Chinese website!