• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP之curl_php

php 搞代码 3年前 (2018-06-21) 84次浏览 已收录 0个评论

 当我第一次接触curl的时候,看文档,以及网上search各种资料,官方(http://cn2.php.net/manual/en/intro.curl.php)的解释是,这是某大牛写的一个libcurl库,PHP支持该扩展库,允许我们以各种不同的协议(http、https、ftp、telnet、file…)访问各种不同的服务器,支持post、put、ftp或基于表单的文件上传,支持cookie、代理等等。

 
     好像还是似懂非懂,我觉得最简单的解释是,curl是一个工具集,由libcurl扩展库支持,包含一些函数,使用这些函数可以模拟我们来访问某些地址,也就是,我们手动在浏览器地址栏里面输入http://www.baidu.com,来访问百度,curl就可以代替这种手动操作,以程序的形式来实现这一过程,这个操作、过程得到的结果,是浏览器给了我们一个百度搜索的首页。
 
     既然curl是一个工具集,有很多函数可供调用,可以想象成,在地址栏输入URL(可能会带一些参数),当输入完点击回车的时候,相当于调用了某些函数,这些函数在百度某台或某几台服务器上的脚本上写着,函数运行完后会有某种效果,比如返回了值,或者没返回值,或者打印了一些东西,在这里呈现了一个页面给你,而curl能实现的功能,比简单展示一个页面多得多,这些各自不同的功能是通过curl_setopt函数来实现的。比如在接SDK的时候,别人提供的是访问地址形式的API,这时curl就大显身手。
 
     1.get实现
 
复制代码
<?php
    $url = 'http://www.somesite.com&#39;;
    $data = array('username'=>'Peter', 'password'=>12345);
    function get($url, $data = array()){
        $ch = curl_init();   // 初始化一个curl资源类型变量
        
        /*设置访问的选项*/
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);  // 启用时会将服务器服务器返回的Location: 放在header中递归的返回给服务器
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );  // 将获得的数据返回而不是直接在页面上输出
        curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_HTTP );  // 设置访问地址用的协议类型为HTTP        
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);  // 访问的超时时间限制为15s
        $url = url.'?'.http_build_query($data);  
        curl_setopt($ch, CURLOPT_URL, $url);  // 设置即将访问的URL
 
        $result = curl_exec($ch);  // 执行本次访问,返回一个结果
        // …                     // 针对结果的正确与否做一些操作
        return $result;
    }
    // $result = get(%url, $data);  // 调用
复制代码
      2.post实现
 
复制代码
<?php
    function post($url, $data = array()){
        $ch = curl_init(); 
          
        curl_setopt($ch, CURLOPT_POST, true);  // 设置为post传递形式
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);  // 设置post传递的数据
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  // 设置数据以文件流的形式返回
        curl_setopt($ch, CURLOPT_USERAGENT, '');  // 将用户代理置空
        curl_setopt($ch, CURLOPT_HEADER, false);  // 设置不显示头信息
          
        $result = curl_exec($ch);
        $info = curl_getinfo($ch);   // 获取本次访问资源的相关信息
          
        return $result;
    }   

欢迎大家阅读《PHP之curl_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址