ホームページ  >  記事  >  バックエンド開発  >  PHP は値の取得のみを受け付けて POST 値を受け付けないのはなぜですか?

PHP は値の取得のみを受け付けて POST 値を受け付けないのはなぜですか?

小云云
小云云オリジナル
2018-03-15 13:04:033185ブラウズ

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'] に保存されます。

関連する推奨事項:

get と post の違いについて詳しく説明します

以上がPHP は値の取得のみを受け付けて POST 値を受け付けないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。