ホームページ  >  記事  >  バックエンド開発  >  PHP での HTTP サーバーの開発について

PHP での HTTP サーバーの開発について

WBOY
WBOYオリジナル
2016-06-23 14:00:161019ブラウズ

最近、仕事の都合でモバイルゲームのランキング管理用のサーバーを構築することになり、クラスメートからの紹介でPHPを使った開発が楽だろうと思い、一時的にPHPの基本的な構文を勉強しました。開発サーバーの情報をインターネットでよく検索しました。
ここでは、私が独自のサーバーを作成するときに遭遇した問題について説明します。一時的に PHP サーバーを開発する必要がある私のような初心者が助けを得られることを願っています。専門家の方は、私のことを無視してください。
インターネット上で見つかる多くの情報は、PHP が http リクエストの送信をどのようにシミュレートするかについて説明しています。サーバーがクライアント リクエストを取得する方法についてはほとんど情報がありません。おそらく、システムを学習している人なら知っていると思います。 、それは本当にA欠陥です。
私が見つけた情報は、php で作られたサーバーがクライアント データを受け入れ、$_POST、$_GET、$_REQUEST を通じて取得できるということです。クライアントは、対応する $_post と $_get を使用してデータを送信する必要がありますが、$_REQUEST で問題ないようです。
$_POST と $_GET の違いについては、Baidu にたくさんありますので、自分で見つけることができます。
$_POST と $_GET は、クライアントから渡されたパラメータを返します。これらのパラメータを処理することで関数を完了できます。クライアントにデータを返すには、エコーするだけです
クライアントが get メソッドを使用してリクエストを送信する場合、データの取得は非常に簡単です $_SERVER['QUERY_STRING'] を使用するだけです。情報は http://hi .baidu.com/iigyphfsjfgjkye/item/f180b2fbc5aa18ee1b111fc1 から取得してください。自分で確認してください

今回構築した php サーバーは、理由がわかりませんが、 $_POST、$_GET、$_REQUEST を使用してデータを取得します。そこで、データを取得するための $GLOBALS[$HTTP_RAW_POST_DATA] と file_get_contents("http://input") を見つけました
上記 2 つのメソッドは、クライアントから投稿されたリクエストを取得できます。 1 つ目は、1 種類のデータであるようです。受信できません。忘れていました。
2 番目の $request = file_get_contents("http://input") を使用して、クライアントから送信されたパラメーターを取得しました。

ここではBaiduからダウンロードできるFidderというソフトウェアを紹介します。このソフトウェアは、クライアントの代わりに get、post などのリクエストを送信したり、サーバーがクライアントのリクエストを受信できるかどうかをテストしたりできます。


ディスカッション(解決策)への返信

lz が表現したいことは何ですか?

何はともあれ、気に入っていただければ幸いです。今後は私の経験をもっと共有できればと思います

すべての投稿が私を助けることができると感じています。投稿者の経験はとても良いものです

これは投稿者自身の要約です学ぶ ?

$_POST、$_GET、$_REQUEST を使用してデータを取得することはできません。そこで、データを取得するための $GLOBALS[$HTTP_RAW_POST_DATA] と file_get_contents("http://input") を見つけました。

データはバイナリ ストリームですか?

$_POST: HTTP POST メソッドを通じて渡される変数の配列。は自動グローバル変数です。
$GLOBALS['HTTP_RAW_POST_DATA']: 元の POST データを含む $HTTP_RAW_POST_DATA 変数を常に生成します。この変数は、認識できない MIME タイプのデータが検出された場合にのみ生成されます。 $HTTP_RAW_POST_DATA は、enctype="multipart/form-data" フォーム データでは使用できません。
つまり、基本的に $GLOBALS['HTTP_RAW_POST_DATA'] と $_POST は同じです。

ただし、投稿されたデータが PHP によって認識されない場合は、$GLOBALS['HTTP_RAW_POST_DATA'] を使用して、text/xml や SOAP などのデータを受け取ることができます。

追加説明: PHP によってデフォルトで認識されるデータ型は、application/x-www.form-urlencoded の標準データ型です

LZ は PHP を使用して Apache に似た Web サーバーを開発するつもりだったのですが、そうではありませんでした外。 。 。 。

これはソフト記事のプロモーションであるべきだと思います。 。 。最後の一行は一瞬で理解できました。 。そうですね、それは考えすぎです。

lzが表現したいことは何ですか? 私が遭遇した問題を共有しているだけです。もしかしたら、私と同じ一時的なニーズを持つ人々を助けることができるかもしれません...

これは投稿者自身の学習の要約ですか? 忘れても構いませんが、このサーバーの構築が完了したら、php は使用しないかもしれません。結局のところ、それは一時的に必要なだけです...

$_POST、$_GET、$_REQUEST を使用してデータを取得することはできません。そこで、データを取得するための $GLOBALS[$HTTP_RAW_POST_DATA] と file_get_contents("http://input") を見つけました。

データはバイナリ ストリームですか?

$_POST: HTTP POST メソッドを通じて渡される変数の配列。は自動グローバル変数です。
$GLOBALS['HTTP_RAW_POST_DATA']: 元の POST データを含む $HTTP_RAW_POST_DATA 変数を常に生成します。この変数は、認識できない MIME タイプのデータが検出された場合にのみ生成されます。 $HTTP_RAW_POST_DATA は、enctype="multipart/form-data" フォーム データでは使用できません。
つまり、基本的に $GLOBALS['HTTP_RAW_POST_DATA'] と $_POST は同じです。

ただし、投稿されたデータが PHP によって認識されない場合は、$GLOBALS['HTTP_RAW_POST_DATA'] を使用して、text/xml や SOAP などのデータを受け取ることができます。

補足: PHP がデフォルトで認識するデータ型は application/x-www.form-urlencoded の標準データ型です ふふふ、ちょっと調べただけでよくわかりません。アドバイスありがとうございます…

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