好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PHP CURL用法详解 - php函数

PHP CURL用法详解

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即可.

查看更多关于PHP CURL用法详解 - php函数的详细内容...

  阅读:73次