php socket方式提交的post详解

2018-09-21 08:52

阅读:363

  <?
/*
**POST报文到主机
*/
functionPostToHost($url,$data){
$url=parse_url($url);
if(!$url)returncouldn\tparseurl;
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)returnFailedtoopensocketto$url[host]$portERROR:$errno-$errstr;

fputs($fp,sprintf(POST%s%s%sHTTP/1.0\\n,$url[\path\],$url[\query\]??:,$url[\query\]));
fputs($fp,Host:$url[host]\\n);
fputs($fp,Content-type:application/x-
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;
}/*endfunctionPostToHost*/
?>


评论


亲,登录后才可以留言!