ホームページ  >  記事  >  バックエンド開発  >  php_PHP チュートリアルの php://input と $_POST の違いは何ですか

php_PHP チュートリアルの php://input と $_POST の違いは何ですか

WBOY
WBOYオリジナル
2016-07-13 10:39:24788ブラウズ

まずは 2 つの例を見てみましょう

例:php://input

post.php
コードは次のとおりです

<フォームアクション="post.php"メソッド="ポスト"> <入力タイプ="テキスト" 名前="ユーザー"> <入力タイプ="パスワード" 名前="パスワード"> <入力タイプ="送信">



コードは次のとおりです 例、投稿 html

コードは次のとおりです 名前を入力してください: 年齢を入力してください: welcome.php





コードは次のとおりです あなたは 歳です!
ようこそ .

HTTP POSTで送信された変数はURLには表示されません。

$_POST を使用してページから情報を受信できない場合、php://input を使用して値を受信できます。では、この 2 つの違いは何でしょうか?

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

$http_raw_post_data は、PHP に組み込まれているグローバル変数です。これは、Content-Type が認識できない場合に、POST データを変数 $http_raw_post_data にそのまま埋めるために PHP によって使用されます。また、Content-Type が multipart/form-data である POST データを読み取ることもできません。 PHP が常に POST データを変数 $http_raw_post_data に入力できるように、php.ini の always_populate_raw_post_data 値を On に設定する必要があります。

その後、$_POST は送信されたデータを連想配列に整理し、urldecode などのエンコード処理、さらにはエンコード変換を実行します。

そして php://input は、入力ストリームを介したファイルの読み取りを通じて、未処理の POST の元のデータを取得します。

php://inputでPOSTの生データを読み込むことができます。 $HTTP_RAW_POST_DATA よりもメモリへの負担が少なく、特別な php.ini 設定は必要ありません。 php://input は enctype=”multipart/form-data”; では使用できません

php://input は $_GET データを読み取れません。これは、http リクエストのボディ部分ではなく、http リクエスト ヘッダー (header) の PATH フィールドに $_GET データが query_path として書き込まれているためです。

http://www.bkjia.com/PHPjc/730226.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/730226.html技術記事まず 2 つの例を見てみましょう: php://input コードは次のとおりです。 form action=post.php method=post input type=text name=user input type=password name=password input type=submit /form p...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。