php の php://input、$_POST、$HTTP_RAW_POST_DATA の類似点と相違点

WBOY
リリース: 2016-06-23 13:29:29
オリジナル
950 人が閲覧しました

以前の仕事では php://input という記述方法によく遭遇しましたが、なぜ $_POST があるのにこの記述方法を使用するのかわかりませんでした。今回はまとめてみましょう。

最初に最も単純な例を見てみましょう:

例 1:

<?phpvar_dump(http_build_query($_POST));var_dump(file_get_contents("php://input"));var_dump($HTTP_RAW_POST_DATA);?><form method="post">年龄:<input name="age" type="text" /><input name="submit" type="submit" /></form>
ログイン後にコピー

24 を入力して送信すると、出力結果は次のようになります:


例 1 から次の結論を導き出すことができます:

1。以下では、 http_build_query($_POST) = file_get_contents("php://input") ですが、Content-Type は、値が application/x-www-data-urlencoded および multipart/form-data の場合にのみ使用されます。クライアントからサーバーに送信されたデータが XML またはその他の形式の場合、この場合は php:// のみを使用できます。 . 入力または $HTTP_RAW_POST_DATA を受け取ります。

2. $HTTP_RAW_POST_DATA は、php.ini ファイルの always_populate_raw_post_data パラメータの設定に依存します。次に、このパラメータが off に設定されている場合、$HTTP_RAW_POST_DATA はすでに php5 にあります。 6 バージョンは廃止されました。公式の推奨事項は、$HTTP_RAW_POST_DATA の代わりに php://input を使用することです。 php://input を使用すると、always_populate_raw_post_data をアクティブにするよりも必要なメモリが少なくなる可能性があります。


例 2:

<?phpvar_dump(http_build_query($_POST));var_dump(file_get_contents("php://input"));var_dump($HTTP_RAW_POST_DATA);?><form method="post" enctype="multipart/form-data">年龄:<input name="age" type="text" /><input name="submit" type="submit" /></form>
ログイン後にコピー
. 24 を入力して送信すると、出力結果は次のようになります:


例 2:

When enctype="multipart/form-data" php :/ /入力が無効です。


上記は、php://input、$_POST、$HTTP_RAW_POST_DATA の主な違いです。





著作権表示: この記事はブロガーによるオリジナルの記事であり、ブロガーの許可なく複製することはできません。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート