注册 登录

清河洛

php中curl的简单用法介绍

qingheluo2016-12-16清河洛308
curl可以模拟浏览器来传输数据,它支持多种协议要使用curl,需要先在php中开启此功能使用步骤:curl_version();返回关于cURL的版本信息组成的关联数组 1、初始化一个新的会话返回一个cURL句柄,供后续curl函数使用 $ch=curl_init([string $url]);可以在初始化的时候就填入网址,也可以在后面的选项CURLOPT_URL中填写网址 2、设置相应的选项curl_setopt($ch,$option,$value);返回一个bool值 $ch为第一步的初始化的curl资源句柄,$option为设置的选项,$value为选项的值以下选项的值为一个b...

curl可以模拟浏览器来传输数据,它支持多种协议

要使用curl,需要先在php中开启此功能

使用步骤:

curl_version();

返回关于cURL的版本信息组成的关联数组

1、初始化一个新的会话

返回一个cURL句柄,供后续curl函数使用

$ch=curl_init([string $url]);

可以在初始化的时候就填入网址,也可以在后面的选项CURLOPT_URL中填写网址

2、设置相应的选项

curl_setopt($ch,$option,$value);

返回一个bool值

$ch为第一步的初始化的curl资源句柄,$option为设置的选项,$value为选项的值

以下选项的值为一个bool值,代表是否启用:

CURLOPT_HEADER :将头文件的信息作为数据流输出
CURLOPT_MUTE :将cURL函数中所有修改过的参数恢复默认值
CURLOPT_NOBODY :将不对HTML中的BODY部分进行输出
CURLOPT_NOPROGRESS :启用时关闭curl传输的进度条,此项的默认设置为启用。
CURLOPT_SSL_VERIFYPEER :验证证书,禁用后cURL将终止从服务端进行验证,默认为启用
CURLOPT_SSL_VERIFYHOST:验证域名,配合CURLOPT_SSL_VERIFYPEER使用
    访问https网站要将CURLOPT_SSL_VERIFYPEER和CURLOPT_SSL_VERIFYHOST设置为FALSE
CURLOPT_POST :会发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样。
CURLOPT_RETURNTRANSFER :将curl_exec()获取的信息以文件流的形式返回,而不是直接输出

以下选项的值为一个int值:

CURLOPT_CONNECTTIMEOUT :在发起连接前等待的时间,如果设置为0,则无限等待
CURLOPT_DNS_CACHE_TIMEOUT :设置在内存中保存DNS信息的时间,默认为120秒
CURLOPT_PORT :指定连接端口
CURLOPT_TIMEOUT :设置cURL允许执行的最长秒数
CURLOPT_TIMEOUT_MS :设置cURL允许执行的最长毫秒数

以下选项的值为一个string值:

CURLOPT_COOKIE :设定请求头中"Cookie:"的内容。多个cookie用分号+空格(; )分隔("fruit=apple; colour=red")
CURLOPT_COOKIEFILE :包含cookie数据的文件名,cookie文件的格式可以是Netscape格式,或者只是纯HTTP头部信息存入文件
CURLOPT_COOKIEJAR :连接结束后保存cookie信息的文件。
CURLOPT_ENCODING :TTP请求头中"Accept-Encoding:"的值
    支持的有"identity","deflate"和"gzip"
    如果为空字符串"",请求头会发送所有支持的编码类型
CURLOPT_REFERER :在HTTP请求头中"Referer: "的内容
CURLOPT_URL :需要获取的URL地址,也可以在curl_init()函数中设置
CURLOPT_USERAGENT :在HTTP请求中包含一个"User-Agent: "头的字符串
CURLOPT_USERPWD :传递一个连接中需要的用户名和密码,格式为:"[username]:[password]"
    结合curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);使用
CURLOPT_POSTFIELDS :全部数据使用HTTP协议中的"POST"操作来发送
    要发送文件,在文件名前面加上@前缀并使用完整路径
    这个参数可以设置为通过urlencoded后的字符串类似'para1=val1&para2=val2&...'或使用一个以字段名为键值,字段数据为值的数组
    如果value是一个数组,Content-Type头将会被设置成multipart/form-data

以下选项的值为一个array:

CURLOPT_HTTP200ALIASES :200响应码数组,数组中的响应码被认为是正确的响应,否则被认为是错误的
CURLOPT_HTTPHEADER :用来设置HTTP头字段的数组
    格式: array('CLIENT-IP:127.0.0.1', 'X-FORWARDED-FOR:127.0.0.1','HA-HA:zidingyi')
    设置的值在$_SERVER中的索引为名称前面加上HTTP_前缀,减号(-)或自动变为下划线,也可以直接使用下划线

下面三条语句是用于设置代理服务器的:

curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);
curl_setopt($ch, CURLOPT_PROXY, 'ip地址:端口');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');

3.按照第二步的设定执行一个cURL会话

$data=curl_exec(resource $ch);

4、对第三步的执行进行操作

确定是否正确执行。

curl_errno($ch) :返回错误号(为0代表执行正确)
curl_error($ch) :返回错误的字符串

获取一个cURL资源句柄最后一次传输的相关信息:

curl_getinfo(resource $ch[,$opt]);

$opt指定则返回指定对应的字符串
未指定则返回一个包含所有信息的关联数组
$opt可以指定的选项

CURLINFO_EFFECTIVE_URL :最后一个有效的URL地址
CURLINFO_HTTP_CODE :最后一个收到的HTTP代码
CURLINFO_FILETIME :远程获取文档的时间,如果无法获取,则返回值为"-1"
CURLINFO_TOTAL_TIME :最后一次传输所消耗的时间
CURLINFO_NAMELOOKUP_TIME :名称解析所消耗的时间
CURLINFO_CONNECT_TIME :建立连接所消耗的时间
CURLINFO_PRETRANSFER_TIME :从建立连接到准备传输所使用的时间
CURLINFO_STARTTRANSFER_TIME :从建立连接到传输开始所使用的时间
CURLINFO_REDIRECT_TIME :在事务传输开始前重定向所使用的时间
CURLINFO_SIZE_UPLOAD :上传数据量的总值
CURLINFO_SIZE_DOWNLOAD :下载数据量的总值
CURLINFO_SPEED_DOWNLOAD :平均下载速度
CURLINFO_SPEED_UPLOAD :平均上传速度
CURLINFO_HEADER_SIZE :header部分的大小
CURLINFO_HEADER_OUT :发送请求的字符串
CURLINFO_REQUEST_SIZE :在HTTP请求中有问题的请求的大小
CURLINFO_CONTENT_TYPE :下载内容的Content-Type:值,NULL表示服务器没有发送有效的Content-Type:值

4.关闭cURL资源,并且释放系统资源

curl_close($ch);



网址导航