PHP中cURL使用

PHP中的数据传输神器cURL
先谢慕课网,谢谢老师。

cURL的概念:
    (client URL Library Function ) 使用URL语法传输数据的命令行工具.客户端向服务器请求资源的工具。
cURL的使用场景:
    请求网页资源(编写网页爬虫);
    WebService数据接口资源(动态获取接口数据,比如天气,号码归属地等);
    FTP服务器里面的文件资源(下载甚至上传FTP服务器里面的文件);
    其他资源(所有网络上的资源都可以用cURL访问和下载到)。
在PHP中使用cURL:
    1.确认PHP支持cURL;
    (windows在命令行里面 php -i查看php相关信息,然后在cmd窗口上面右键编辑查找cURL,)
    (Linux里面直接 php安装路径/php -i |grep cURL);
    2.有就有,没有就安装,安装方式之前有总结。
    3.步骤:初始化 curl_init(),发送请求,接收数据 curl_exec(),关闭curl curl_close()

用cURL制作一个简单的网页爬虫
    $curl = curl_init("http://www.baidu.com");
    curl_exec($curl);
    curl_close($curl);

用cURL抓取网页信息并替换部分内容
    $curlobj = curl_init();
    curl_setopt($curlobj, CURLOPT_URL, "http://www.baidu.com");
    curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);

$output = curl_exec($curlobj);
    curl_close($curlobj);

echo str_replace(‘百度‘,‘呵呵‘,$output);

用cURL调用WebService获取天气信息
    用post的方式获取数据
    $data = "theCityCode=0376&theUserId=12";

$curlobj = curl_init();
    curl_setopt($curlobj, CURLOPT_URL, "http://www.WebXml.com.cn/WebServices/WeatherWS.asmx/getWeather");
    curl_setopt($curlobj, CURLOPT_HEADER, 0);
    curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($curlobj, CURLOPT_POST, 1);
    curl_setopt($curlobj, CURLOPT_POSTFIELDS, $data);
    curl_setopt($curlobj, CURLOPT_HTTPHEADER, array("application/x-www-form-urlencoded;
        charset = utf-8",
        "Content-length:".strlen($data)));

$rtn = curl_exec($curlobj);

if(!curl_error($curlobj)){
        echo "RETURN:".$rtn;
    } else {
        echo "curl error: ".curl_error($curlobj);
    }

用cURL下载需要登录的网页
    保存cookie,做两次操作,第一步保存cookie做登录
    $data = "username = yhy&password = 123456&remember = 1";

$curlobj = curl_init();
    curl_setopt($curlobj, CURLOPT_URL, "http://www.imooc.com/user/login");
    curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);//不让直接打印

//cookie相关设置,cookie用于保存网站登录信息的媒介
    date_default_timezone_set(‘PRC‘);//设置时区,因为cookie是有过期时间的
    curl_setopt($curlobj, CURLOPT_COOKIESSION, TRUE);//支持cookie和session
    curl_setopt($curlobj, CURLOPT_COOKIEFILE, "cookiefile");
    //保存到本地的文件,文件名可调整
    curl_setopt($curlobj, CURLOPT_COOKIEJAR, "cookiefile");
    curl_setopt($curlobj, CURLOPT_COOKIE, session_name().‘=‘.session_id());

curl_setopt($curlobj, CURLOPT_HEADER, 0);//不要打印头部信息
    curl_setopt($curlobj, CURLOPT_FOLLOWLOCATION, 1);//支持页面链接跳转

curl_setopt($curlobj, CURLOPT_POST, 1);//post方式
    curl_setopt($curlobj, CURLOPT_POSTFIELDS, $data);//传入数据
    curl_setopt($curlobj, CURLOPT_HTTPHEADER, array("application/x-www-form-urlencoded;
        charset = utf-8",
        "Content-length:".strlen($data)));//长度信息

curl_exec($curlobj);//执行

curl_setopt($curlobj, CURLOPT_URL, "http://www.imooc.com/space/index");//重新初始化
    curl_setopt($curlobj, CURLOPT_POST, 0);//不用post方式
    curl_setopt($curlobj, CURLOPT_HTTPHEADER, array("Content-type:text/xml");

$outfile = curl_exec($curlobj);//执行
    curl_close($curlobj);
    echo $output;

用cURL从ftp上下载文件到本地
    $curlobj = curl_init();
    curl_setopt($curlobj, CURLOPT_URL, "ftp://目标ip/down.txt");
    curl_setopt($curlobj, CURLOPT_HEADER, 0);
    curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curlobj, CURLOPT_TIMEOUT, 300);//超时时间设置
    curl_setopt($curlobj, CURLOPT_USERPWD, "ftpuser:password");//设置ftp的账号密码

$outfile = fopen("dest.txt", ‘wb‘);//写入本地的文件
    curl_setopt($curlobj, CURLOPT_FILE, $outfile);

$rtn = curl_exec($curlobj);
    fclose($outfile);

if(!curl_error($curlobj)){
        echo "RETURN:".$rtn;
    } else {
        echo "curl error: ".curl_error($curlobj);
    }

curl_close($curlobj);

用cURL从本地上传文件到ftp服务器
    $curlobj = curl_init();
    $localfile = "./put.txt";
    $fp = fopen($localfile, ‘r‘);

curl_setopt($curlobj, CURLOPT_URL, "ftp://目标ip/put01.txt");
    curl_setopt($curlobj, CURLOPT_HEADER, 0);
    curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curlobj, CURLOPT_TIMEOUT, 300);//超时时间设置
    curl_setopt($curlobj, CURLOPT_USERPWD, "ftpuser:password");//设置ftp的账号密码

curl_setopt($curlobj, CURLOPT_UPLOAD, 1);
    curl_setopt($curlobj, CURLOPT_INFILE, $fp);//指定文件
    curl_setopt($curlobj, CURLOPT_INFILESIZE, filesize($localfile));//指定上传的文件的大小

$rtn = curl_exec($curlobj);
    fclose($fp);

if(!curl_error($curlobj)){
        echo "Uploaded successfully";
    } else {
        echo "Curl error: ".curl_error($curlobj);
    }

curl_close($curlobj);

用cURL访问HTTPS资源
    $curlobj = curl_init();//初始化
    curl_setopt($curlobj, CURLOPT_URL, "https://ajax.aspnetcdn.com/ajax/jquery.validate/1.12.0/jquery.validate.js");//设置访问地址
    curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);//执行之后不直接打印出来

date_default_timezone_set(‘PRC‘);//设置时区
    curl_setopt($curlobj, CURLOPT_SSL_VERIFYPEER, 0);//终止从服务器进行验证

$output = curl_exec($curlobj);//执行
    curl_close($curlobj);//关闭curl
    echo $output;

时间: 2024-07-29 18:58:04

PHP中cURL使用的相关文章

Http原理及PHP中cURL的使用

为了给接下来的教程做好铺垫,本文将讲述如何用PHP发出Http请求进行模拟登录,顺带会讲一些Http请求原理.模拟登录…就是模拟浏览器登录嘛,所谓请求,只不过是你向网站发一些字,网站又给你回复一些字,这一般都是基于Http或Https协议的.平时是浏览器帮我们做好了这些工作,封装数据发送到指定网站,然后接收,最后编译成网页显示出来.在模拟登录中,呵呵,这些都要我们自己做,只是最后不用编译…只要提取到需要的数据就行了. PHP中模拟登录有三种方式.第一是直接用file_get_contens(网站

php中curl不支持https的解决办法

在php程序中使用curl去访问https站点时,报错:Protocol https not supported or disabled in libcurl 该错误信息表示php当时编译时使用的curl库不支持https, 验证方法为你的curl安装目录/bin/curl  -V  显示如下:Protocols: dict file ftp gopher http imap pop3 rtsp smtp telnet tftp这表示curl是不支持 https的 为了支持https,需要下载源

php中的curl】php中curl的详细解说

本文我来给大家详细介绍下cURL的简单的使用方法,下文我将会给大家详细介绍cURL的高级应用, cURL可以使用URL的语法模拟浏览器来传输数据, FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP等协议都可以很好的支持,包括一些: HTTPS认证,HTTP POST方法,HTTP PUT方法,FTP上传,keyberos认证,HTTP上传,代理服务器,cookies,用户名/密码认证, 下载文件断点续传,上传文件断点续传,htt

php中curl模拟浏览器来传输数据

cURL可以使用URL的语法模拟浏览器来传输数据, 因为它是模拟浏览器,因此它同样支持多种协议,FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP等协议都可以很好的支持,包括一些:HTTPS认证,HTTP POST方法,HTTP PUT方法,FTP上传,keyberos认证,HTTP上传,代理服务器,cookies,用户名/密码认证,下载文件断点续传,上传文件断点续传,http代理服务器管道,甚至它还支持IPv6,scoket5代

PHP中curl的CURLOPT_POSTFIELDS参数使用细节

CURL确实是一个不错的好工具,不仅在PHP中还是其他的操作系统中,都是一个非常好用的.但是如果你有些参数没有用好的话,那可能会得不到自己理想中的结果. 在通常情况下,我们使用 CURL 来提交 POST 数据的时候,我们已经习惯了这样的写法: curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); 但是这样的写法在有时候并不会很好用,可能会得到服务器返回的 500 错误.但是我们尝试在使用 Socket 方式向服务器提交数据的时候,我们会得到非常正确

PHP中curl的使用

cURL 函数 curl_close — 关闭一个cURL会话 curl_copy_handle — 复制一个cURL句柄和它的所有选项 curl_errno — 返回最后一次的错误号 curl_error — 返回一个保护当前会话最近一次错误的字符串 curl_escape — 使用 URL 编码给定的字符串 curl_exec — 执行一个cURL会话 curl_file_create — 创建一个 CURLFile 对象 curl_getinfo — 获取一个cURL连接资源句柄的信息 c

PHP中CURL方法curl_setopt()函数的一些参数

转载自http://blog.csdn.net/superbirds/article/details/7532277 bool curl_setopt (int ch, string option, mixed value) curl_setopt()函数将为一个CURL会话设置选项.option参数是你想要的设置,value是这个选项给定的值. 下列选项的值将被作为长整形使用(在option参数中指定):     •    CURLOPT_INFILESIZE : 当你上传一个文件到远程站点,

linux中curl命令

linux curl是一个利用URL规则在命令行下工作的文件传输工具.它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称url为下载工具. 一,curl命令参数,有好多我没有用过,也不知道翻译的对不对,如果有误的地方,还请指正. -a/--append 上传文件时,附加到目标文件 -A/--user-agent <string>  设置用户代理发送给服务器 - anyauth   可以使用“任何”身份验证方法 -b/--cookie <name=string/file>

php中curl的详细解说 【转载】

这几天在帮一些同学处理问题的时候,突然发现这些同学是使用file_get_contents()函数来采集页面内容的,貌似都没有curl的概念亦或是对这种工具特别不敏感, 本文我来给大家详细介绍下cURL的简单的使用方法,下文我将会给大家详细介绍cURL的高级应用, 好,废话不多说,我们先来认识下什么是cURL,可能还有很多同学没有听说过这个工具,我先来给大家简单介绍下什么是cURL: cURL可以使用URL的语法模拟浏览器来传输数据, 因为它是模拟浏览器,因此它同样支持多种协议, FTP, FT

PHP中CURL方法curl_setopt()函数的一些参数 (转)

bool curl_setopt (int ch, string option, mixed value) curl_setopt()函数将为一个CURL会话设置选项.option参数是你想要的设置,value是这个选项给定的值. 下列选项的值将被作为长整形使用(在option参数中指定):     •    CURLOPT_INFILESIZE : 当你上传一个文件到远程站点,这个选项告诉PHP你上传文件的大小. •    CURLOPT_VERBOSE : 如果你想CURL报告每一件意外的事