1、curl介绍
curl是PHP的一个扩展,利用该扩展可以实现服务器之间的数据或文件传输,也就是说curl就是一个工具,用来做服务器之间数据、文件传输的工具。
此外,php的curl可以实现模拟http的各种请求,这也是php做网络爬虫的基础,也多用于接口api的调用。
2、开启curl扩展
(1) 在php.ini里面开启curl这个扩展
(2) 将PHP的安装路径保存到环境变量的系统变量中(环境变量之间的分隔符是英文的分号)
(3) 重启apache服务器
(4)重启计算机
3、使用CURL发送请求
基本流程
- 初始化连接句柄;
- 设置CURL选项;
- 执行并获取结果;
- 释放CURL连接句柄。
发送get请求

发送post请求

4、curl的一些常用配置项
- CURLOPT_URL 指定请求的URL;
- CURLOPT_RETURNTRANSFER 设置为1表示稍后执行的curl_exec函数的返回是URL的返回字符串,而不是把返回字符串定向到标准输出并返回TRUE;
- CURLLOPT_HEADER设置为0表示不返回HTTP头部信息。
- CURLOPT_SSL_VERIFYHOST和CURLOPT_SSL_VERIFYPEER设置为false表示跳过安全证书验证,针对https协议的请求。
5、封装curl请求类
将curl的初始化、设置选项、发出请求、关闭资源等操作封装到一个类中,便于将来重用
<?php /* * 使用curl扩展发出http的get或post请求 */ class HttpRequest { //url,请求的服务器地址 private $url = ''; //is_return,是否返回结果而不是直接显示 private $is_return = 1; public function __set($p,$v) { if(property_exists($this, $p)){ $this->$p = $v; } } // 发出http请求的方法 //参数:提交的数据,默认是空的 public function send($data = array()) { //1. 如果传递数据了,说明向服务器提交数据(post),如果没有传递数据,认为从服务器读取资源(get) $ch = curl_init(); //2. 不管是get、post,跳过证书的验证 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //3. 设置请求的服务器地址 curl_setopt($ch, CURLOPT_URL, $this->url); //4. 判断是get还是post if(!empty($data)){ curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); } //5. 是否返回数据 if($this->is_return===1){ //说明返回 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch); return $result; }else{ //直接输出 curl_exec($ch); curl_close($ch); } } }
6、curl实现文件上传
说明:
PHP5.6之前的版本上传文件使用:@
Php5.6之后的版本使用new CURLFile()

7、curl使用cookie登录
(1)通过CURLOPT_COOKIEJAR配置项设置,设置cookie保存到哪里

(2) 以后再访问服务器的时候,随身携带cookie(里面就是存储的session文件的名字),那么怎么找到这个cookie呢?
通过CURLOPT_COOKIEFILE 配置项设置,设置每次请求时携带哪个cookie文件

浙公网安备 33010602011771号