php 使用 curl 模拟实现 get 和 post请求的方法。
<?php /* * url post请求地址 * post post数据 * cookie cookie数据,传递一个包含HTTP cookie的头连接 * cookie 获取到的cookie信息的保存位置 * referer 在HTTP请求中包含一个"referer"头的字符串 */ function vcurl($url,$post='',$cookie='',$cookiejar='',$referer=''){ $tmpInfo=''; $cookiepath=getcwd().'./'.$cookiejar; $curl=curl_init(); curl_setopt($curl,CURLOPT_URL,$url); curl_setopt($curl,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']); if($referer){ curl_setopt($curl,CURLOPT_REFERER,$referer); }else{ curl_setopt($curl,CURLOPT_AUTOREFERER,1); } if($post){ curl_setopt($curl,CURLOPT_POST,1); curl_setopt($curl,CURLOPT_POSTFIELDS,$post); } if($cookie){ curl_setopt($curl,CURLOPT_COOKIE,$cookie); } if($cookiejar){ curl_setopt($curl,CURLOPT_COOKIEJAR,$cookiepath); curl_setopt($curl,CURLOPT_COOKIEFILE,$cookiepath); } curl_setopt($curl,CURLOPT_TIMEOUT,100); curl_setopt($curl,CURLOPT_HEADER,0); curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); $tmpInfo=curl_exec($curl); if(curl_errno($curl)){ echo '<pre><b>错误:</b><br />'.curl_error($curl); } curl_close($curl); return $tmpInfo; }
使用方法如下:
echo vcurl('http://php.hhsy.cc/post.php',array('id'=>235,'title'=>'php模拟发送get和post请求'),'',tempnam('./temp','cookie'));