以前の仕事では 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>
例 2:
When enctype="multipart/form-data" php :/ /入力が無効です。
上記は、php://input、$_POST、$HTTP_RAW_POST_DATA の主な違いです。
著作権表示: この記事はブロガーによるオリジナルの記事であり、ブロガーの許可なく複製することはできません。