PHP CURL用法详解
发布:smiling 来源: PHP粉丝网 添加日期:2014-01-17 09:19:21 浏览: 评论:0
PHP CURL的作用对于很多应用来说有很大的用处,下面我来详细介绍php curl用法详解,有需要了解的朋友可进入参考。
PHP中的CURL函数库(Client URL Library Function)
curl_close — 关闭一个curl会话
curl_copy_handle — 拷贝一个curl连接资源的所有内容和参数
curl_errno — 返回一个包含当前会话错误信息的数字编号
curl_error — 返回一个包含当前会话错误信息的字符串
curl_exec — 执行一个curl会话
curl_getinfo — 获取一个curl连接资源句柄的信息
curl_init — 初始化一个curl会话
curl_multi_add_handle — 向curl批处理会话中添加单独的curl句柄资源
curl_multi_close — 关闭一个批处理句柄资源
curl_multi_exec — 解析一个curl批处理句柄
curl_multi_getcontent — 返回获取的输出的文本流
curl_multi_info_read — 获取当前解析的curl的相关传输信息
curl_multi_init — 初始化一个curl批处理句柄资源
curl_multi_remove_handle — 移除curl批处理句柄资源中的某个句柄资源
curl_setopt_array — 以数组的形式为一个curl设置会话参数
curl_setopt — 为一个curl设置会话参数
curl_version — 获取curl相关的版本信息
curl_init()函数的作用初始化一个curl会话,curl_init()函数唯一的一个参数是可选的,表示一个url地址。
curl_exec()函数的作用是执行一个curl会话,唯一的参数是curl_init()函数返回的句柄。
curl_close()函数的作用是关闭一个curl会话,唯一的参数是curl_init()函数返回的句柄。
1. php curl的默认调用方法,get方式访问url,代码如下:
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_HTTPHEADER, $header); //设置http头
- curl_setopt($ch, CURLOPT_ENCODING, "gzip" ); //设置为客户端支持gzip压缩
- curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30 ); //设置连接等待时间
- curl_setopt($ch, CURLOPT_URL, $url );
- curl_exec( $ch );
- if ($error = curl_error($ch) ) {
- //出错处理
- return -1;
- }
- fclose($fp);
- $curl_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); //获取http返回值
- if( $curl_code == 200 ) {
- //正常访问url
- }
- //异常
2. 设置http header支持curl访问lighttpd服务器,Java代码如下:
$header[]= 'Expect:';$header[]= 'Expect:';
3. 设置curl,只获取http header,不获取body,Java代码如下:
- curl_setopt($ch, CURLOPT_HEADER, 1);
- curl_setopt($ch, CURLOPT_NOBODY, 1);
- curl_setopt($ch, CURLOPT_HEADER, 1);
- curl_setopt($ch, CURLOPT_NOBODY, 1);
或者只获取body,Java代码如下:
- curl_setopt($ch, CURLOPT_HEADER, 0); // make sure we get the body
- curl_setopt($ch, CURLOPT_NOBODY, 0);
- curl_setopt($ch, CURLOPT_HEADER, 0); // make sure we get the body
- curl_setopt($ch, CURLOPT_NOBODY, 0);
4.访问虚拟主机,需设置Host,代码如下
$header[]= 'Host: '.$host;
5. 使用post, put,delete等REStful方式访问url,代码如下:
curl_setopt($ch, CURLOPT_POST,1); put, delete: curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE"); //或者PUT,需要服务器支持这些方法。
6.保存下载内容为文件,代码如下:
curl_setopt($ch, CURLOPT_FILE, $fp);
模拟POST请求,代码如下:
- <?PHP
- $url = 'POST_URL';
- $fields=array(
- 'a' => 'a',
- 'b' => 'b',
- );
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_POST, count($fields));
- curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
- ob_start();
- curl_exec($ch);
- $result = ob_get_contents();
- ob_end_clean();
- echo $result;
- curl_close($ch);
- ?>
模仿get登录,代码如下:
- <?
- session_start();
- $url = 'http://localhost/test/loginAct.php';
- $post = 1;
- $returntransfer = 1;
- $port = 80;
- $header = 0;
- $nobody = 0;
- $followlocation = 1;
- $cookie_jar = $_SESSION['cookie_jar'];
- $request = 'userName=huyan&pwd='.sha1(yanyan).'&ac=login';
- $ch = curl_init();
- $options = array(CURLOPT_URL => $url,
- CURLOPT_HEADER => $header,
- CURLOPT_NOBODY => $nobody,
- CURLOPT_PORT => $port,
- CURLOPT_POST => $post,
- CURLOPT_POSTFIELDS => $request,
- CURLOPT_RETURNTRANSFER => $returntransfer,
- CURLOPT_FOLLOWLOCATION => $followlocation,
- CURLOPT_COOKIEJAR => $cookie_jar,
- CURLOPT_COOKIEFILE => $cookie_jar,
- CURLOPT_REFERER => $url
- );
- curl_setopt_array($ch, $options);
- $temp = curl_exec($ch);
- curl_errno($ch);
- curl_close($ch);
- echo $temp;
- ?>
注意,如果你的curl不可以使用我们可以参考下面方法来打开
启php curl函数库的步骤
1).去掉windows/php.ini 文件里;extension=php_curl.dll前面的; 用 echo phpinfo();查看php.ini的路径
2).把php5/libeay32.dll,ssleay32.dll复制到系统目录windows/下
3).重启apache
配置php支持curl
curl是一个利用URL语法在命令行方式下工作的文件传输工具。它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。curl同样支持HTTPS认证,HTTP POST方法, HTTP PUT方法, FTP上传, kerberos认证, HTTP上传, 代理服务器, cookies, 用户名/密码认证, 下载文件断点续传, 上载文件断点续传, http代理服务器管道( proxy tunneling), 甚至它还支持IPv6, socks5代理服务器, 通过http代理服务器上传文件到FTP服务器等等,功能十分强大。Windows操作系统下的网络蚂蚁,网际快车(FlashGet)的功能它都可以做到。准确的说,curl支持文件的上传和下载,所以是一个综合传输工具,但是按照传统,用户习惯称curl为下载工具。
配置方法:
1、拷贝PHP目录中的libeay32.dll 和 ssleay32.dll 两个文件到 system32 目录。
2、修改php.ini:配置好 extension_dir ,去掉 extension = php_curl.dll 前面的分号。
php下扩展php_curl.dll的安装
已经内置有php_curl.dll,在ext目录下,此DLL用于支持SSL和zlib,在php.ini中找到有extension=php_curl.dll,去掉前面的注释.
设置extension_dir=c:phpext, 刷新PHP页面时报错, 说找不到模块php_curl.dll,拷贝php_curl.dll 到windowssystem32,还是同样的错.
在网上找了一下,需要将:libeay32.dll, ssleay32.dll, php5ts.dll, php_curl.dll都拷贝到system32目录下,重启IIS即可.
Tags: PHP CURL
- 上一篇:php生成随机密码程序代码
- 下一篇:php中拆分和组合字符串函数介绍
相关文章
- ·PHP校验ISBN码的函数(2013-11-11)
- ·PHP不缓存数据头(2013-11-11)
- ·PHP采集程序中常用的函数(2013-11-11)
- ·PHP多重判断删除文件函数(2013-11-11)
- ·php中文汉字截取函数(2013-11-12)
- ·如何用php创建与删除多级目录函数(2013-11-14)
- ·什么函数能够把文件从一个目录下转移到另外一个目录下?(2013-11-27)
- ·php_admin_value(php_admin_flag)和php_value(php_flag)(2013-11-27)
- ·使用PHP重新实现PHP脚本引擎内置函数(2013-11-27)
- ·计算一个程序的执行时间的函数(2013-11-27)
- ·php curl_init函数用法(2013-11-28)
- ·php md5 与md5_file区别详细说明(2013-11-28)
- ·php session_cache_limiter session_cache_expire等函数(2013-11-29)
- ·php var_dump简单测试(2013-11-29)
- ·php file_exists无效解决办法(2013-11-29)
- ·强大的php检查文件类型(2013-11-30)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)