php は通常、get 値または post 値を使用します。この記事では、php が get 値のみを受け入れ、POST 値を受け入れられない理由を主に説明します。
1. PHP が POST データを取得するためのいくつかのメソッド
方法 1. 最も一般的なメソッドは次のとおりです: $_POST['fieldname'];
説明: は Content-Type: application/ のみを受信できます。 x-www-form-urlencoded によって送信されたデータ
説明: POST フォームからのデータです
メソッド 2、file_get_contents("php://input");
説明:
POST の読み取りを許可します生データ。
(インターフェーステストツールを使用する場合、ヘッダーが content-type: application/json に設定されている場合にのみこのメソッドを使用できます。)
$HTTP_RAW_POST_DATA と比較して、メモリへの負担が少なく、メモリへの負荷が少なく、いいえ特別な php.ini 設定が必要です。
php://input は enctype="multipart/form-data" では使用できません。
説明:
Content-Type が指定されていない POST データの場合、file_get_contents("php://input"); を使用して元のデータを取得できます。
実際、このメソッドは、PHP を使用して任意の POST データを受信するために使用できます。 Content-Type に関係なく、バイナリ ファイル ストリームを含めることもできます。
したがって、方法 2 が最も安全な方法です
方法 3、$GLOBALS['HTTP_RAW_POST_DATA'];
注:
元の POST データを含む $HTTP_RAW_POST_DATA 変数を常に生成します。
この変数は、認識できない MIME タイプのデータが見つかった場合にのみ生成されます。
$HTTP_RAW_POST_DATA は、enctype="multipart/form-data" フォーム データには使用できません。
投稿されたデータが PHP によって認識されない場合は、$GLOBALS['HTTP_RAW_POST_DATA'] を使用して受信できます。
text/xml や
説明:
$GLOBALS['HTTP_RAW_POST_DATA'] は、POST からの元のデータを保存します。
$_POST または $_REQUEST は、PHP によってフォーマットされたデータを key=>value の形式で保存します。
ただし、POST データが $GLOBALS['HTTP_RAW_POST_DATA'] に保存されるかどうかは、centent-Type の設定によって異なります。つまり、データを POST するときは、Content-Type を明示的に指定する必要があります: application/x-www-form-urlencoded, POSTデータは $GLOBALS['HTTP_RAW_POST_DATA'] に保存されます。
関連する推奨事項:
以上がPHP は値の取得のみを受け付けて POST 値を受け付けないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。