経験者向け
(1) フォームPOST送信の場合、PHPはPOSTデータ
$_POSTを取得し、php://inputで値を取得できますが、$HTTP_RAW_POST_DATAは空です
$_POSTを関連付けます送信されたデータを配列に整理し、urldecode などのエンコード処理、さらにはエンコード変換を実行します。
php://input 未処理の POST 生データは、入力ストリームを介したファイル読み取りによって取得できます
(2) fsockopen は POST データを送信し、PHP を通じて POST データを取得します
- $ SOCK = ofsockOpen ("Localhost", 80, $ ERRNO, $ EERSTR, 30) ");
$
- data
= - "txt=" . urlencode("中") . "&bar=" .
Valuefwrite($s)わかりました、「ポスト/posttest/response .php HTTP/1.0rn"); fwrite($sock, "ホスト: localhostrn "); fwrite($sock, "Content-type: application ion/x- www-form-urlencodedrn");
- fwrite($sock, "Content-length: " .
strlen( $data) . "rn"); - fwrite($sock, "Accept: */ *rn");
-
fwrite($sock, "rn");
- fwrite($sock , “$datarn”);
fwrite($sock, "rn"); -
while ($ -
str
- =
- trim
(fgets($sock,- 4096))) $headers 。 = "$ strn"
- ; echo "n"; $body
=
- ""; (!feof($sock; )) $ body .=
- fgets
($sock, 4096); -
fclose($sock); PHP を取得POST データの結論: 1. 元の POST データを簡単に取得するには、php://input を使用します
2. $HTTP_RAW_POST_DATA は、通常渡される POST の Content-Type タイプが認識されない場合にのみ有効です- ページフォームが送信された後の POST データは、$HTTP_RAW_POST_DATA を通じて抽出できません。そのエンコーディング タイプ属性 (enctype 属性) は application/x-www-form-urlencoded、multipart/form-data です。
注: ページ内の enctype 属性を PHP で認識されない型に明示的に変更した場合でも、無効のままです。フォーム送信エンコーディング属性はフォームに制限されているため、データがアプリケーションに従っている場合にのみ、認識できないタイプはデフォルトのエンコーディング (つまり application/x-www-form-urlencoded) に従って送信されたとみなされます-
3。 /x-www-form PHP は、-urlencoded 型が送信された場合にのみ POST データを取得できます。
http://www.bkjia.com/PHPjc/445978.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/445978.html技術記事 POST モードで送信された経験豊富な (1) フォームの場合、PHP は POST データ $_POST を取得し、php://input は値を取得できます。連想配列モードでは $HTTP_RAW_POST_DATA は空の $_POST です...