Home  >  Article  >  Backend Development  >  What should I do if php post cannot receive data?

What should I do if php post cannot receive data?

藏色散人
藏色散人Original
2021-10-15 10:05:185725browse

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

What should I do if php post cannot receive 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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn