首页 > php学习 > php常用函数 > php中curl的简单用法介绍
2016
12-16

php中curl的简单用法介绍

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_CAINFO选项设置证书,使用CURLOPT_CAPATH选项设置证书目录,CURLOPT_SSL_VERIFYHOST需要被设置成TRUE,禁用时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 :设定HTTP请求中"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。

CURLOPT_CAPATH指定一个一个保存着多个CA证书的目录。这个选项是和CURLOPT_SSL_VERIFYPEER一起使用的。

CURLOPT_CAINFO一个保存着1个或多个用来让服务端验证的证书的文件名。这个参数仅仅在和CURLOPT_SSL_VERIFYPEER一起使用时才有意义。

以下选项的值为一个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_前缀,如上所示会有$_SERVER['HTTP_CLIENT_IP']、$_SERVER['HTTP_X_FORWARDED_FOR']、$_SERVER['HTTP_HA_HA']三个,减号(-)或自动变为下划线,也可以直接使用下划线。

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

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); //cURL句柄$ch也会被释放。

最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。