まずは 2 つの例を見てみましょう
例:php://input
コードは次のとおりです | |
<フォームアクション="post.php"メソッド="ポスト">
<入力タイプ="テキスト" 名前="ユーザー">
<入力タイプ="パスワード" 名前="パスワード">
<入力タイプ="送信">
フォーム> | post.php
コードは次のとおりです
echo file_get_contents("php://input");?> | |
| 例、投稿
コードは次のとおりです
フォーム> | 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 |