Posted in PHP onAugust 08, 2013
废话不多说。直接上代码:
sock_post.php:
<?php function sock_post($url, $data='') { $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 "Failed to open socket to $url[host]"; fputs($fp, sprintf("POST %s%s%s HTTP/1.0/n", $url['path'], $url['query'] ? "?" : "", $url['query'])); fputs($fp, "Host: $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:
<?php echo "post:"; print_r($_POST); echo 'get:'; print_r($_GET); ?>
php中用socket模拟http中post或者get提交数据的示例代码
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@