phpcurl模拟post请求提交数据例子总结
在php中要模拟post请求数据提交我们会使用到curl函数,下面我来给大家举几个curl模拟post请求提交数据例子有需要的朋友可参考参考。
注意:curl函数在php中默认是不被支持的,如果需要使用curl函数我们需在改一改你的php.ini文件的设置,找到php_curl.dll去掉前面的";"就行了
例1
?代码如下 复制代码 ''tanteng''?//''password''=>''password'');?$ch=curl_init();//print_r($ch);curl_setopt?($ch,CURLOPT_URL,$uri);curl_setopt($ch,CURLOPT_POST,1);curl_setopt($ch,CURLOPT_HEADER,0);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_POSTFIELDS,$data);$return=curl_exec($ch);curl_close($ch);?print_r($return);
接受php页面远程服务器:
例2
用CURL模拟POST请求抓取邮编与地址
完整代码:
?代码如下 复制代码 #!/usr/local/php/bin/phpstart();
$cookie_jar=tempnam(''/tmp'',''cookie'');
?
$filename=$argv[1];$start_num=$argv[2];$end_num?=$argv[3];
?
for($i=$start_num;$i<$end_num;$i++){???$zip=sprintf(''6s'',$i);
???$fields_post=array(???????????''postcode''=>$zip,????????????''queryKind''=>2,????????????''reqCode''=>''gotoSearch'',????????????''search_button.x''=>37,???????????''search_button.y''=>12???????????);
???$fields_string=http_build_query($fields_post,''&'');???$ch=curl_init();???curl_setopt($ch,CURLOPT_URL,"URL?reqCode=gotoSearch&queryKind=2&postcode=".$zip);???curl_setopt($ch,CURLOPT_HEADER,true);???curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);???curl_setopt($ch,CURLOPT_POST,true);???curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,120);???curl_setopt($ch,CURLOPT_REFERER,$refer);???curl_setopt($ch,CURLOPT_HTTPHEADER,$headers_login);???curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie_jar);???curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_jar);???curl_setopt($ch,CURLOPT_USERAGENT,$_SERVER[''HTTP_USER_AGENT'']);????curl_setopt($ch,CURLOPT_POST,1);//发送一个常规的Post请求????curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
???$data=curl_exec($ch);????preg_match_all(''/id="table1">[s]? | [s]?[sS]?[s]? /'',$data,$matches);???if(!$handle=?fopen($filename,''a+'')){???????echo"不能打开文件$filename";???????echo"n";???????exit;???}
???if(fwrite($handle,$matches[0][1])===FALSE){???????echo"不能写入到文件$filename";???????echo"n";???????exit;???}
???echo"成功地将$somecontent写入到文件$filename";???echo"n";
???fclose($handle);???curl_close($ch);}
?
classruntime{???var$StartTime=0;???var$StopTime=0;???functionget_microtime()???{???????list($usec,$sec)=explode('''',microtime());return((float)$usec+(float)$sec);???}???functionstart()???{???????$this->StartTime=$this->get_microtime();???}???functionstop(){???????$this->StopTime=$this->get_microtime();???}???functionspent()???{???????return($this->StopTime-$this->StartTime);???}}
?
$runtime->stop();
$con=''Processedin''.$runtime->spent().''seconds'';echo''Processedin''.$runtime->spent().''seconds''; 模拟POST请求提交数据或上传文件.
.
?代码如下 复制代码 http://www.a.com/a.php
发送POST请求
functionexecUpload(){
$file=''/doucment/Readme.txt'';$ch=curl_init();$post_data=array(???''loginfield''=>''username'',???''username''=>''ybb'',???''password''=>''123456'',''file''=>''@d:usrwwww.shanxiwang.netwwtranslatedocumentReadme.txt'');curl_setopt($ch,CURLOPT_HEADER,false);//启用时会发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样。curl_setopt($ch,CURLOPT_POST,true);??curl_setopt($ch,CURLOPT_BINARYTRANSFER,true);curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);curl_setopt($ch,CURLOPT_URL,''handleUpload.php'');$info=curl_exec($ch);curl_close($ch);???print_r($info);
}
2.http://www.b.com/handleUpload.php
functionhandleUpload(){print_r($_POST);echo''===fileuploadinfo:'';print_r($_FILES);} ■cURL函数
■curl_close—关闭一个cURL会话■curl_copy_handle—复制一个cURL句柄和它的所有选项■curl_errno—返回最后一次的错误号■curl_error—返回一个保护当前会话最近一次错误的字符串■curl_exec—执行一个cURL会话■curl_getinfo—获取一个cURL连接资源句柄的信息■curl_init—初始化一个cURL会话■curl_multi_add_handle—向curl批处理会话中添加单独的curl句柄■curl_multi_close—关闭一组cURL句柄■curl_multi_exec—运行当前cURL句柄的子连接■curl_multi_getcontent—如果设置了CURLOPT_RETURNTRANSFER,则返回获取的输出的文本流■curl_multi_info_read—获取当前解析的cURL的相关传输信息■curl_multi_init—返回一个新cURL批处理句柄■curl_multi_remove_handle—移除curl批处理句柄资源中的某个句柄资源■curl_multi_select?—等待所有cURL批处理中的活动连接■curl_setopt_array—为cURL传输会话批量设置选项■curl_setopt—设置一个cURL传输选项■curl_version—获取cURL版本信息
|