PHP使⽤CURL详解
curl是PHP的⼀个扩展,利⽤该扩展可以实现服务器之间的数据或⽂件传输
也就是说curl就是⼀个⼯具,⽤来做服务器之间数据、⽂件传输的⼯具
⽤来采集⽹络中的html⽹页⽂件、其他服务器提供接⼝数据等
开启curl扩展
(1)在php.ini⾥⾯开启curl这个扩展
(2)将PHP的安装路径保存到环境变量的系统变量中(环境变量之间的分隔符是英⽂的分号)
(3)重启apache服务器
(4)重启计算机
curl的⼀些常⽤配置项
(1)通过CURLOPT_RETURNTRANSFER配置项设置,是直接显⽰结果(echo)还是将结果返回(return)
(2)针对https协议的请求,需要验证客户端的安全证书,通常都会跳过安全证书的验证
(3) CURLOPT_HEADER是否返回header头信息
封装的⼀个curl⽅法1:
<?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){php header
//说明返回
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
return$result;
}else{
//直接输出
curl_exec($ch);
curl_close($ch);
}
}
}
封装的⼀个curl⽅法2:
1//curl采集器
2public function http_curl($url,$type='get',$res='json',$arr=''){
3//1.初始化curl
4$ch=curl_init();
5//2.设置curl的参数
6 curl_setopt($ch,CURLOPT_URL,$url);
7 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
8if($type=='post'){
9    curl_setopt($ch,CURLOPT_POST,1);
10    curl_setopt($ch,CURLOPT_POSTFIELDS,$arr);
11  }
12//3.采集
13$output=curl_exec($ch);
14//4.关闭
15 curl_close($ch);
16//如果返回的值,是json格式,则转换成数组
17if($res=='json'){
18if(curl_errno($ch)){
19//请求失败,返回错误信息
20return curl_error($ch);
21  }else{
22//请求成功
23return json_decode($output,true);
24 }
25 }
26 }//http_curl end
curl模拟⽂件上传
说明:PHP5.6之前的版本上传⽂件使⽤:@
Php5.6之后的版本使⽤new CURLFile()
这样其他服务器接收到数据之后,就可以移动了
curl模拟cookie登录
(1)我们访问服务器时,服务器会先在服务器端创建⼀个session⽂件,保存⽤户的信息,便于在多个页⾯共享数据,然后服务器会
以setcookie的形式告诉客户端在⾃⼰⾝上创建cookie,保存session⽂件的名,以前使⽤浏览器访问服务器的时候,浏览器会在⾃⼰⾝上创建cookie⽂件,现在使⽤我们的服务器访问:cookie保存到哪⾥?
CURLOPT_COOKIEJAR配置项设置,cookie保存到哪⾥
(2)以后再访问服务器的时候,随⾝携带cookie(⾥⾯就是存储的session⽂件的名字),那么怎么到这个cookie呢?
CURLOPT_COOKIEFILE 配置项设置,每次请求时携带哪个cookie⽂件
PHP使⽤CURL详解
CURL是⼀个⾮常强⼤的开源库,⽀持很多协议,包括HTTP、FTP、TELNET等,我们使⽤它来发送HTTP请求。它给我们带来的好处是可以通过灵活的选项设置不同的HTTP协议参数,并且⽀持HTTPS。CURL可以根据URL前缀是“HTTP” 还是“HTTPS”⾃动选择是否加密发送内容。
使⽤CURL发送请求的基本流程
使⽤CURL的PHP扩展完成⼀个HTTP请求的发送⼀般有以下⼏个步骤:
1. 初始化连接句柄;
2. 设置CURL选项;
3. 执⾏并获取结果;
4. 释放VURL连接句柄。
下⾯的程序⽚段是使⽤CURL发送HTTP的典型过程
// 1. 初始化
$ch = curl_init();
// 2. 设置选项,包括URL
curl_setopt($ch,CURLOPT_URL,"www.devdo");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_HEADER,0);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。