首页 > 语言 > PHP > 正文

PHP CURL用法详解

2024-09-04 11:48:11
字体:
来源:转载
供稿:网友

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,代码如下:

  1. $ch = curl_init();  
  2. curl_setopt($ch, CURLOPT_HTTPHEADER, $header); //设置http头  
  3. curl_setopt($ch, CURLOPT_ENCODING, "gzip" ); //设置为客户端支持gzip压缩  
  4. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30 ); //设置连接等待时间  
  5. curl_setopt($ch, CURLOPT_URL, $url );  
  6. curl_exec( $ch );  
  7. if ($error = curl_error($ch) ) {  
  8. //出错处理  
  9. return -1;  
  10. }  
  11. fclose($fp); 
  12. $curl_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); //获取http返回值  
  13. if$curl_code == 200 ) {  
  14. //正常访问url  
  15. }  
  16. //异常  

2. 设置http header支持curl访问lighttpd服务器,Java代码如下:

$header[]= 'Expect:';$header[]= 'Expect:'; 

3. 设置curl,只获取http header,不获取body,Java代码如下:

  1. curl_setopt($ch, CURLOPT_HEADER, 1);  
  2. curl_setopt($ch, CURLOPT_NOBODY, 1); 
  3. curl_setopt($ch, CURLOPT_HEADER, 1);  
  4. curl_setopt($ch, CURLOPT_NOBODY, 1); 

或者只获取body,Java代码如下:

  1. curl_setopt($ch, CURLOPT_HEADER, 0); // make sure we get the body  
  2. curl_setopt($ch, CURLOPT_NOBODY, 0); 
  3. curl_setopt($ch, CURLOPT_HEADER, 0); // make sure we get the body 
  4. 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请求,代码如下:

  1. <?PHP  
  2.     $url = 'POST_URL';  
  3.     $fields=array(  
  4.         'a' => 'a',  
  5.         'b'   => 'b',  
  6.     );  
  7.        
  8.     $ch = curl_init();  
  9.     curl_setopt($ch, CURLOPT_URL, $url);  
  10.     curl_setopt($ch, CURLOPT_POST, count($fields));  
  11.     curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);  
  12.     ob_start();  
  13.     curl_exec($ch);  
  14.        
  15.     $result = ob_get_contents();  
  16.        
  17.     ob_end_clean();  
  18.     echo $result;  
  19.     curl_close($ch); 
  20. ?> 

模仿get登录,代码如下:

  1. <? 
  2. session_start(); 
  3. $url = 'http://localhost/test/loginAct.php'
  4. $post = 1; 
  5. $returntransfer = 1; 
  6. $port = 80; 
  7. $header = 0; 
  8. $nobody = 0; 
  9. $followlocation = 1; 
  10. $cookie_jar = $_SESSION['cookie_jar']; 
  11. $request = 'userName=huyan&pwd='.sha1(yanyan).'&ac=login'
  12. $ch = curl_init(); 
  13. $options = array(CURLOPT_URL => $url
  14.        CURLOPT_HEADER => $header
  15.        CURLOPT_NOBODY => $nobody
  16.        CURLOPT_PORT => $port
  17.        CURLOPT_POST => $post
  18.        CURLOPT_POSTFIELDS => $request
  19.        CURLOPT_RETURNTRANSFER => $returntransfer
  20.        CURLOPT_FOLLOWLOCATION => $followlocation
  21.        CURLOPT_COOKIEJAR => $cookie_jar
  22.        CURLOPT_COOKIEFILE => $cookie_jar
  23.        CURLOPT_REFERER => $url 
  24.        ); 
  25. curl_setopt_array($ch$options); 
  26. $temp = curl_exec($ch); 
  27. curl_errno($ch); 
  28. curl_close($ch); 
  29. echo $temp
  30. ?> 

注意,如果你的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即可.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表