この記事では、PHP が POST データを受信する 3 つの方法を簡単に紹介し、簡単な例を添付します。必要な方は参考にしてください。
通常、ユーザーはブラウザの Web フォームを使用してサーバーにデータを投稿します。当社は PHP を使用して、ユーザーがサーバーに投稿したデータを受信し、適切に処理します。しかし、場合によっては、ユーザーがクライアント ソフトウェアを使用してサーバー PHP プログラムに投稿データを送信し、それを識別するために $_POST を使用できない場合、どのように処理すべきでしょうか?データを受信する$_POSTメソッド
$_POSTメソッドは、自動グローバル変数であるHTTP POSTメソッドを通じて渡される変数の配列です。たとえば、$_POST['name'] を使用すると、Web フォームおよび Web ページから投稿されたデータを非同期で受信できます。つまり、$_POST は、ドキュメント タイプ Content-Type: application/x-www で送信されたデータのみを受信できます。 -form-urlencoded。
$GLOBALS['HTTP_RAW_POST_DATA'] メソッドを使用してデータを受信します
投稿されたデータがtext/xmlやsoapなど、PHPが認識できるドキュメントタイプではない場合は、$GLOBALS['HTTP_RAW_POST_DATA']を使用してそれを受け取ることができます。 $HTTP_RAW_POST_DATA 変数には、生の POST データが含まれています。この変数は、認識できない MIME タイプのデータが検出された場合にのみ生成されます。 $HTTP_RAW_POST_DATA は、enctype="multipart/form-data" フォーム データでは使用できません。つまり、$HTTP_RAW_POST_DATA を使用すると、Web フォームから投稿されたデータを受信できません。
データを受け取るphp://inputメソッド
生の POST データにアクセスするより良い方法は、php://input です。 php://input を使用すると、POST の生データを読み取ることができます。 $HTTP_RAW_POST_DATA よりもメモリへの負担が少なく、特別な php.ini 設定は必要ありませんが、php://input は enctype="multipart/form-data" では使用できません。
たとえば、ユーザーはクライアント アプリケーションを使用してファイルをサーバーに投稿しますが、ファイルの内容は気にしませんが、ファイルを完全にサーバーに保存したいとします。
?
1 2 3
|
$input = file_get_contents('php://input'); file_put_contents($original, $input); //$original はサーバー上のファイルです
|
以下は、$_POST、$GLOBALS['HTTP_RAW_POST_DATA']、および php://input の 3 つの異なる方法で POST データを受信する処理を示す小さな例です。
a.html
?
2 3 4 5 6
|
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
header("Content-type:text/html;charset=utf-8");
echo '$_POST受信收: print_r($_POST); エコー ' ';
echo '$GLOBALS['HTTP_RAW_POST_DATA']受信: print_r($GLOBALS['HTTP_RAW_POST_DATA']); エコー ' ';
echo 'php://input受信收: $data = file_get_contents('php://input'); print_r(urldecode($data)); |
以上が本書のすべての内容であり、php がポストデータを受信する 3 つの方法を大家が理解できることを願っています。
http://www.bkjia.com/PHPjc/1012364.html