ホームページ  >  記事  >  バックエンド開発  >  PHPの入力ストリームと出力ストリームの詳細な説明と分析例

PHPの入力ストリームと出力ストリームの詳細な説明と分析例

墨辰丷
墨辰丷オリジナル
2018-06-01 14:46:041788ブラウズ

この記事では主に PHP の入出力ストリームを紹介します。ここでは関連情報と簡単なサンプルコードをまとめています。必要な方は参考にしてください。

最近 http プロトコルを勉強しています。 http プロトコルをよりよく理解するために、nodejs の http モジュールを調べてみました。とても得した気分です。たとえば、http リクエストを使用してリクエストを送信します。

var options = {
 host: 'localhost',
 port: 80,
 path: '/backbone/data.php',
 method: 'POST'
};


var req = http.request(options, function(res) {
 console.log('STATUS: ' + res.statusCode);
 console.log('HEADERS: ' + JSON.stringify(res.headers));
 res.setEncoding('utf8');
 res.on('data', function (chunk) {
  console.log('BODY: ' + chunk);
 });
});
// write data to request body
req.end('name=liuzhang&age=28');

上記のコードは、データ 'name=liuzhang&age=28' を送信することを意味し、コールバックは応答オブジェクトであり、サーバーから応答されたデータを出力します。 !

data.phpのコードは

print_r($_POST);

渡されたデータを印刷します!

コマンドラインで実行した結果は

配列が空、つまり$_POSTにデータがないことがわかります。最初はデータが送信されていないのかと思いました。しかし、バックエンドの data.php を

echo file_get_contents("php://input");

に変更し、渡されたデータを受け取りました。

php://input は、要求された生データへのアクセスを提供する読み取り専用ストリームです。 POST リクエストの場合、特定の php.ini ディレクティブに依存しないため、$HTTP_RAW_POST_DATA の代わりに php://input を使用することをお勧めします。 また、この場合、$HTTP_RAW_POST_DATA はデフォルトでは設定されないため、always_populate_raw_post_data をアクティブにするよりも必要なメモリが少なくなる可能性があります。 enctype="multipart/form-data"を使用した場合、php://inputは無効となります。

$_POST は、application/x-www-form-urlencoded タイプに従ってデータが送信された場合にのみ取得できます。 form の enctype 属性は、一般的に使用される 2 つのメソッドです: application/x-www-form。 -urlencoded および multipart/form-data、デフォルトは application/x-www-form-urlencoded です。 アクションが get の場合、ブラウザーは x-www-form-urlencoded エンコーディング メソッドを使用してフォーム データを文字列 (name1=value1&name2=value2...) に変換し、その文字列を URL の末尾に追加します。 ? で分割し、この新しい URL をロードします。 アクションがポストされると、ブラウザーはフォーム データを http 本文にカプセル化し、それをサーバーに送信します。

送信オプションを

var options = {
 host: 'localhost',
 port: 80,
 path: '/backbone/data.php',
 method: 'POST',
 headers : {'Content-Type': 'application/x-www-form-urlencoded'}
};

に変更し、ヘッダーのコンテンツタイプを追加すると、$_POST を使用してデータを受信できるようになります。 このフォーム タイプでない場合は、生の入力を使用してデータを受信できます。

要約: 上記がこの記事の全内容です。皆様の学習に役立つことを願っています。

関連する推奨事項:

phpファイルアップロードの詳細な説明

phpWeChatパブリックアカウントjs-sdk開発アプリケーション

phpWeChatパブリックプラットフォームインタラクションの詳細な説明とインターフェース

以上がPHPの入力ストリームと出力ストリームの詳細な説明と分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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