PHP でソケットを使用して HTTP_PHP でのデータ送信の送信または取得をシミュレートするサンプル コード

WBOY
リリース: 2016-07-21 14:59:48
オリジナル
845 人が閲覧しました

废话不多说。 $url = parse_url($url);
$url['scheme'] || $url['scheme'] = 'http'; $url['host'] || $url['host'] = $_SERVER['HTTP_HOST'];
$url['path'][0] != '/' && $url['path'] = '/'.$url['path '];

$query = $data; if(is_array($data)) $query = http_build_query($data); $fp = @fsockopen($url['host'], $url['port'] ? $url['port'] : 80); if (!$fp) return "$url へのソケットのオープンに失敗しました[ホスト]";
fputs($fp, sprintf("POST %s%s%s HTTP/1.0/n", $url['path'], $url['query'] ? "?" : "", $url['クエリ']));
fputs($fp, "ホスト: $url[host]/n");
fputs($fp, "Content-type: application/x-www-form-urlencoded/n");
fputs($fp, "Content-length: " . strlen($query) . "/n");
fputs($fp, "Connection: close/n/n");

fputs($fp, "$query/n");

$line = fgets($fp,1024);

if (@!eregi("^HTTP/1/.. 200", $line)) return;


$results = "";

$inheader = 1;

while(!feof($fp)) {
$line = fgets($fp,1024);
if ($inheader && ($line == "/n" || $line == "/r/n")) {
$inheader = 0;
}elseif (!$inheader) {

$results .= $line;

}

}

fclose($fp);

return $results;

}

$re = sock_post('http://localhost/direct_post/get_post.php?id=1',array('wel'=>'hello'));
echo $re;
?>



get_post.php:



复制代


代码如下:


echo "post:";

print_r($_POST);
echo 'get : ';print_r($_GET);
?>

http://www.bkjia.com/PHPjc/328127.html

www.bkjia.com

本当

http://www.bkjia.com/PHPjc/328127.html

技術記事
直接上代コード: sock_post.php: 正代コード代次例: ?php function sock_post($url, $data='') { $url = parse_url($url); $url['スキーム'] || $url['スキーム'] =...

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート