PHP fsockopen が POST データを送信する説明_PHP チュートリアル

WBOY
リリース: 2016-07-13 17:42:43
オリジナル
824 人が閲覧しました

フォーム [url=javascript:;]POST[/url] と fsockopen 送信メソッドの違いを比較してください。

フォームPOST送信の場合
$_POSTと[url=javascript:;]php[/url]://inputで値を取得できます、$HTTP_RAW_POST_DATAは空です
$_POSTは送信されたデータを連想配列に整理し、 URLdecode などのエンコード、またはエンコード変換。
php://input は、入力ストリームを介したファイル読み取りを通じて未処理の POST 生データを取得できます。

php://input は、POST 生データを読み取ることができます。 $HTTP_RAW_POST_DATA よりもメモリへの負担が少なく、特別な php.ini 設定は必要ありません。 php://input は enctype="multipart/form-data" では使用できません。

fsockopen は POST データを送信します
例:
$sock = fsockopen("localhost", 80, $errno, $errstr, 30);
if (!$sock) die("$errstr ($errno) ");
$data = "txt=" . urlencode("中") . "&bar=" . urlencode("Bar の値");
fwrite($sock, "POST /posttest/resp****e.php 1.0 ");
fwrite($sock, "ホスト: localhost ");
fwrite($sock, "コンテンツタイプ: application/x-www-form-urlencoded ");
fwrite($sock, "コンテンツの長さ: " . strlen($data) . " ");
fwrite($sock, "Accept: */* ");
fwrite($sock, " ");
fwrite($sock, "$data ");
fwrite($sock, " ");
$headers = "";
while ($str = trim(fgets($sock, 4096)))
$headers .= "$str ";
echo " ";
$body = "";
while (!feof($sock))
$body .= fgets($sock, 4096);
fclose($sock);
echo $body;
(1)の結果と同じ

結論:
1. 元の POST データを簡単に取得するには、php://input を使用します

2. $HTTP_RAW_POST_DATA は、POST の Content-Type タイプが PHP によって認識されない場合にのみ有効です
通常、ページ フォームを通じて送信した後など$HTTP_RAW_POST_DATA を通じて POST データを抽出することはできません。そのエンコーディング タイプ属性 (enctype 属性) は application/x-www-form-urlencoded、multipart/form-data です。
注: ページ内の enctype 属性を PHP で認識されない型に明示的に変更した場合でも、無効のままです。
フォーム送信エンコード属性はフォームに制限されているため、データが一致する場合にのみ、認識できないタイプはデフォルトのエンコード方法 (つまり、application/x-www-form-urlencoded) に従って送信されたとみなされます

3. to application/x-www- form-urlencoded タイプは、送信時にのみ取得できます。
-.shtml を追加すると、静的ページとして検索されます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/486056.html技術記事フォーム [url=javascript:;]POST[/url] と fsockopen 送信メソッドの違いを比較してください。 フォームPOST送信の場合、$_POSTと[url=javascript:;]php[/url]://inputで値を取得できます...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート