php socket方式提交post详解

来源:互联网 发布:dijkstra算法java代码 编辑:程序博客网 时间:2024/06/06 13:17
php下POST报文到主机 ,post提交代码。
<? /* ** POST报文到主机** 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 */ ?>