在php中有很多方法可以获取某个url的内容,例如:
$content1 = file_get_contents("https://www.baidu.com");
echo $content1;
$content2 = file("https://www.baidu.com");
print_r($content2);
readfile("https://www.baidu.com");
但是这几个函数不够灵活,如果想要进行
(1)错误处理;
(2)向某个服务器提交表单数据,上传文件;
(3)处理cookies或者认证等任务时。
以上三个函数根本没法完成。
这个时候,就要使用cURL了。cURl不但支持很多的网络协议,而且提供了关于url请求的具体信息,很强大!通过cURL,我们能在php程序中自由地发送HTTP请求到某个url来获取或者提交数据。cURl的便捷及强大之处,你可以对curl_setopt进行一系列参数设置。
//设置网络请求配置
function urlrequest($curl,$https=true,$method='GET',$data=null){
//1.创建一个新cURL资源
$ch = curl_init();
//2.设置URL和相应的选项
//要访问的网站
curl_setopt($ch, CURLOPT_URL, $curl);
//启用时会将头文件的信息作为数据流输出。
curl_setopt($ch, CURLOPT_HEADER, false);
//将curl_exec()获取的信息以字符串返回,而不是直接输出。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if($https){
//FALSE 禁止 cURL 验证对等证书(peer's certificate)。
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); //验证主机
}
if($method == 'POST'){
//发送 POST 请求
curl_setopt($ch, CURLOPT_POST, true);
//全部数据使用HTTP协议中的 "POST" 操作来发送。
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
}
//3.抓取URL并把它传递给浏览器
$content = curl_exec($ch);
if ($content === false) {
return "网络请求出错: " . curl_error($ch);
exit();
}
//4.关闭cURL资源,并且释放系统资源
curl_close($ch);
return $content;
}
curl 是使用URL语法的传送文件工具,支持FTP、FTPS、HTTP HTPPS SCP SFTP TFTP TELNET DICT FILE和LDAP。curl 支持SSL证书、HTTP POST、HTTP PUT 、FTP 上传,kerberos、基于HTT格式的上传、代理、cookie、用户+口令证明、文件传送恢复、http代理通道和大量其他有用的技巧 。