PHP Socket方式提交的post详解
php下POST报文到主机 ,post提交利用代码
<?/*** POST报文到主机*/function PostToHost($url, $data) {$url = parse_url($url);if (!$url) return 'couldn't parse url';if (!isset($url['port'])) { $url['port'] = ''; }if (!isset($url['query'])) { $url['query'] = ''; }
$encoded = '';while (list($k,$v) = each($data)) {$encoded .= ($encoded ? '&' : '');$encoded .= rawurlencode($k).'='.rawurlencode($v);}$port = $url['port'] ? $url['port'] : 80;$fp = fsockopen($url['host'], $port, $errno, $errstr);if (!$fp) return 'Failed to open socket to $url[host] $port ERROR: $errno - $errstr';fputs($fp, sprintf('POST %s%s%s HTTP/1.0n', $url['path'], $url['query'] ? '?' : '', $url['query']));fputs($fp, 'Host: $url[host]n');fputs($fp, 'Content-type: application/x-www-form-urlencodedn');fputs($fp, 'Content-length: ' . strlen($encoded) . 'n');fputs($fp, 'Connection: closenn');fputs($fp, '$encodedn');$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 == 'rn')) {$inheader = 0;}elseif (!$inheader) {$results .= $line;}}fclose($fp);return $results;}/* end function PostToHost */?>