php post がデータを受信できない問題の解決策: 1. php.ini の max_input_vars を 5000 に変更します; 2. 「$GLOBALS['HTTP_RAW_POST_DATA']」を通じてデータを取得します。
この記事の動作環境:Windows7システム、PHPバージョン7.1、DELL G3コンピュータ
1:PHPが取得できませんPOST の使用 いくつかのデータの問題
PHP を使用して開発されたプロジェクト。テスト段階で、顧客からデータが正常に保存されなかったと報告されました。
前回のテストは合格しましたが、によるとお客様の情報、データが正常に保存されませんでした。問題を再現しました。
問題は次のようなものです。
お客様はブラウザから保存しましたが、一部のデータは正常に保存されましたが、一部のデータは保存されませんでした。正常に保存されませんでした。
そして I テストを通じて、$_POST 内の一部のデータは使用できないことが判明しましたが、一部のデータは使用可能です。
そして file_get_contents("php://input");この方法でもデータを取得できますが、データを処理する必要があるため、上記のコードを追加すると多くの変更が必要になります。
したがって、よく考えてみると、$_POST## の問題を解決する必要があります。
#私も最初は非常に戸惑いましたが、以前は $_POST がすべて取得できなかったのですが、一部の情報しか取得できなかったのは初めてです。 $_POST はデータを送信できるため、送信前にデータの一部がバックグラウンドに送信されなかったか、バックグラウンドで受信されませんでしたブラウザのリクエストを確認したところ、問題は見つかりませんでした。すべてのデータは正常に送信されましたそれは、バックグラウンドがそれを取得していないことを意味します#私のテストでは、送信されたデータを手動で削除したことがわかりました。
バックエンド $_POST を送信してすべてのデータを取得し、インターネットで検索しました。
$_POST によって送信されたデータにはサイズ制限があることがわかりました
次に、php.ini の max_input_vars を 5000 に変更して完全に解決します。
2: $ の問題の解決策PHP の _POST はフロントエンド データを受信できません
デフォルトでは、フロントエンド リクエスト タイプは Content-Type:application/x-www-form-urlencoded です。データを取得するには $_POST を使用します。 フロントエンドリクエストタイプがContent-Type:application/jsonの場合、$_POSTだけではデータを取得できません。 (たとえば、vue.js の axios、デフォルト モードは application/json)
現時点では、$GLOBALS['HTTP_RAW_POST_DATA'] を通じて取得し、json_decode を使用してそれを例は次のとおりです。
$mypost = $GLOBALS['HTTP_RAW_POST_DATA']$postdata = json_decode($mypost);$username = $postdata->username;
「未定義のインデックス: HTTP_RAW_POST_DATA」というプロンプトが表示された場合は、コードを次のように変更します。
$mypost = isset($GLOBALS['HTTP_RAW_POST_DATA'])?$GLOBALS['HTTP_RAW_POST_DATA']:file_get_contents("php://input");$postdata = json_decode($mypost);$username = $postdata->username;推奨学習: 「
PHP ビデオ チュートリアル
」
以上がphp postがデータを受信できない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。