php socket方式提交post实例代码

php下POST报文到主机 ,post提交利用代码。

如下:

<? 

/* 

** post提交数据

** edit by www.jbxue.com

*/ 

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.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($encoded) . "\\n"); 

fputs($fp, "Connection: close\\n\\n");



fputs($fp, "$encoded\\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; 

}/* end function PostToHost */ 

?>

你可能感兴趣的:(socket)