PHP——Curl模拟POST请求及接受外部请求例子

今天在项目中用到了curl,最近几年不常用记忆有些模糊了,记录一下吧方便以后查看。


在php中要模拟post请求数据提交我们会使用到curl函数。

<?php$uri = "http://blog.leokim.cn/test.php";// 参数数组$data = array (        'name' => '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页面远程服务器:

<?phpif(isset($_POST['name'])){    if(!empty($_POST['name'])){        echo '您好,',$_POST['name'].'!';
    }
}?>

模拟POST请求 提交数据或上传文件 :

<?phpfunction execUpload(){
$file = '/doucment/Readme.txt';
$ch = curl_init();
$post_data = array(	'loginfield' => 'username',	'username' => 'ybb',	'password' => '123456','file' => '@d:usrwwwtranslatedocumentReadme.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, 'http://blog.leokim.cn/handleUpload.php');
$info= curl_exec($ch);
curl_close($ch);
print_r($info);
}2.http://www.b.com/handleUpload.phpfunction handleUpload(){
print_r($_POST);echo '===file upload info:';
print_r($_FILES);
}?><p>
<br/></p>

附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_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版本信息

■curl_setopt — 设置一个cURL传输选项

■curl_version — 获取cURL版本信息