设为首页 收藏本站
查看: 569|回复: 0

[经验分享] php中的CURL库

[复制链接]

尚未签到

发表于 2018-12-17 06:59:57 | 显示全部楼层 |阅读模式
  CURL是利用URL语法在命令行方式下工作的开源文件传输工具。
  PHP通过默认支持CURL扩展库,可以实现开发中常见的传输功能:

  •   实现远程获取和采集内容
  •   实现PHP网页版的FTP上传和下载
  •   实现模拟登陆,例如一个邮件系统,CURL可以模拟Cookies
  •   实现接口对接(API)、数据传输,例如微信公众平台的开放接口访问
  •   实现模拟Cookie等,登录状态下才可以操作的一些属性
  

  PHP的CURL功能扩展模块提供了很多函数,但在所有不走之前要先通过curl_int()创建一个新的CURL会话
$ch = curl_init();  //创建curl资源  现在已成功创建一个curl会话,下一步传递一个URL给curl_setopt()
curl_septopt($ch,CURLOPT_URL,"mysens.blog.运维网.com"); //设置URL  通过前两步我们的准备工作就完成了,接下来就是获取URL站点内容并打印出来
curl_exec($ch); //执行,获取URL内容并输出  最后关闭CURL会话,释放资源
curl_close($ch); //释放资源  这样就完成了一次简单curl会话。
  如果我们需要获取内容但不输出,我们可以加入以下代码控制
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); //任何一个非0或true值都行  当然CURL也有自己的检查错误语句
if(curl_exec($ch) === false){
    echo "cURL Error: ".curl_error($ch); //打印错误
}  一个完整的request代码如下
function request($url,$output = true){
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,$output);
    $res = curl_exec($ch);
    if($res === false){
        trigger_error("cURL Error: ".curl_error($ch));
    }
    curl_close($ch);
    return $res;
}  在手册中查看curl_setopt()的更多设置
  http://php.net/manual/zh/function.curl-setopt.php
  ----------------------------
  下面是几个常用功能的简单说明

  •   上传文件
//object_file 为表单名称,$filepath为路径
if(version_compare(phpversion(), '5.5.0') >=0 ){
    $data = array( 'object_file' => new CURLFile($filepath) );
}else{
    $data = array( 'object_file' => '@'.$filepath ); //@符号一定要有
}  2.模拟登陆
//首先我们需要一个储存cookie的文件地址$cookie=dirname(_FILE_).'/cookie.txt
//接着模拟登陆,需要一个包含用户名及密码的$post=array('usrname'=>mysens,'password'=>123456)
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($ch, CURLOPT_POST,true);
curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($post));
//登陆完成后,获取我们需要的页面信息
curl_setopt($ch, CURLOPT_COOKIEFILE,$cookie);  3.HTTP认证
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt(CURLOPT_USERPWD, '[username]:[password]')  4.代理服务器
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, 'proxy.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, '[username]:[password]');  5.设置SSL
//不进行SSL认证
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
//只信任CA颁布的证书
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_CAINFO, $cacert);  
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
//信任任何证书
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);  cURL有这么多功能,下次用到URL请求时一定要想起cURL库噢




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-652164-1-1.html 上篇帖子: PHP高级程序员所要掌握的技能 下篇帖子: windows 2008 r2 安装php5.5+mysql+mssql+sqlsrv
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表