ホームページ >バックエンド開発 >PHPチュートリアル >$POST、$HTTP_RAW_POST_DATA、php://input の違いについて話しましょう。

$POST、$HTTP_RAW_POST_DATA、php://input の違いについて話しましょう。

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-20 12:49:12928ブラウズ

$POST

$_POST は、POST データを取得するために最も一般的に使用される方法で、送信されたデータを連想配列に編成し、urldecode などのエンコード処理、さらにはエンコードの変換と識別を実行します。データ型は、デフォルトで PHP によって認識されるデータ型です。 application/x-www.form-urlencoded

  • は、text/xml、application/json などは解析できません。 other non-application/x- www.form-urlencoded データ型の内容

HTTP_RAW_POST_DATA

前述したように、デフォルトで PHP によって認識されるデータ型は application/x-www.form-urlencoded で、Content-Type=application/json タイプを使用すると、送信された POST データは現時点では $_POST では取得できませんが、$GLOBALS['HTTP_RAW_POST_DATA'] を使用すると取得できます。 PHP が Content-Type を認識できない場合、POST データを $HTTP_RAW_POST_DATA に埋め込むためです。

  • 有効にするには、php.ini の always_populate_raw_post_data 値を On に設定する必要があります

  • $_POST と php ://input $HTTP_RAW_POST_DATA は、値が取得できる場合は空です

  • enctype="multipart/form-data" には使用できません

  • PHP7 では削除されました このグローバル変数には、

php://input

php://input の代わりに php://input を使用してください入力ストリームを通じてファイルとして読み取ることができます。このメソッドは、未処理の POST 生データを取得し、POST 生データを読み取ることができます。 $HTTP_RAW_POST_DATA よりもメモリへの負担が少なくなります。

  • 特別な php.ini 設定は必要ありません

  • は enctype="multipart/form-data"

概要

上記では、現在 PHP を使用して POST データを取得する 3 つの方法を紹介しました。将来 PHP を使用して POST データを取得する場合は、$ を使用します。 _POST または php://input で問題ありません。 HTTP_RAW_POST_DATA は php://input と同じ目的を達成できますが、メモリに大きな負荷がかかることに当局も気づいたため、PHP7 ではこの使用できないものを断固として削除しました。 。 。

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