使用php模拟post的几种方法

<?php
function file_get_contents_post($url,$post){
$options=array(
'http'=>array(
'method'=>'POST',
//'content'=>'name=caiknife&email=caiknife@gmail.com',
'content'=>http_build_query($post),
),
);

$result=file_get_contents($url,false,stream_context_create($options));

return$result;
}

$data=file_get_contents_post("http://www.a.com/post/post.php",array('name'=>'caiknife','email'=>'caiknife@gmail.com'));




function curl_post($url,$post){
$options=array(
CURLOPT_RETURNTRANSFER=>true,
CURLOPT_HEADER=>false,
CURLOPT_POST=>true,
CURLOPT_POSTFIELDS=>$post,
);

$ch=curl_init($url);
curl_setopt_array($ch,$options);
$result=curl_exec($ch);
curl_close($ch);
return$result;
}

$data=curl_post("http://www.a.com/post/post.php",array('name'=>'caiknife','email'=>'caiknife@gmail.com'));





function socket_post($url,$post){
$urls=parse_url($url);
if(!isset($urls['port'])){
$urls['port']=80;
}

$fp=fsockopen($urls['host'],$urls['port'],$errno,$errstr);
if(!$fp){
echo"$errno,$errstr";
exit();
}

$post=http_build_query($post);
$length=strlen($post);
$header=<<<HEADER
POST{$urls['path']} HTTP/1.1
Host:{$urls['host']}
Content-Type:application/x-www-form-urlencoded
Content-Length:{$length}
Connection:close

{$post}
HEADER;

fwrite($fp,$header);
$result='';
while(!feof($fp)){
//receivetheresultsoftherequest
$result.=fread($fp,512);
}
$result=explode(" ",$result,2);
return$result[1];
}

$data=socket_post("http://www.a.com/post/post.php",array('name'=>'caiknife','email'=>'caiknife@gmail.com'));



?>

【源码最能说明问题,源码是csdn的一篇博文里的:http://blog.csdn.net/caiknife/article/details/8796505】

原文地址:https://www.cnblogs.com/vanwoos/p/4604918.html