php的curl封装类用法实例


Posted in PHP onNovember 07, 2014

本文实例讲述了两个php curl封装类的用法实例,这两个函数可以让我们非常的方便的使用php curl相关函数。分享给大家供大家参考。具体如下:

使用函数之前我们要需要把php curl模块打开(libeay32.dll, ssleay32.dll, php5ts.dll, php_curl.dll)

开启php curl函数库的步骤

1).去掉windows/php.ini 文件里;extension=php_curl.dll前面的; /*用 echo phpinfo();查看php.ini的路径*/
2).把php5/libeay32.dll,ssleay32.dll复制到系统目录windows/下
3).重启apache

代码如下:

<?php

include_once('curl.class.php');

$aa =new Curl('');

 $curlOptions = array(

 CURLOPT_URL => "http://www.xx.com/addTicket.jsp", //访问URL

 CURLOPT_RETURNTRANSFER => true, //获取结果作为字符串返回

 CURLOPT_REFERER => "ww.ww.ww/zw2",

 CURLOPT_HTTPHEADER => array('X-FORWARDED-FOR:139.197.14.19', 'CLIENT-IP:127.0.0.1','Proxy-Client-IP:139.197.14.19','WL-Proxy-Client-IP:139.197.14.19' ),

 CURLOPT_HEADER => 1, //获取返回头信息

 //CURLOPT_SSL_VERIFYPEER => false, //支持SSL加密

 CURLOPT_POST => true, //发送时带有POST参数

 CURLOPT_POSTFIELDS => 'ids=897&Submit=%E6%8A%95%E7%A5%A8', //请求的POST参数字符串

 CURLOPT_TIMEOUT => $aa->timeout //等待响应的时间

 );

 echo $aa->getResponseText($curlOptions);

cul处理类:
<?php

class Curl

{

public $cookieFile;

public $timeout = 160;

Public function __construct($dir){

$this->cookieFile = $this->getTemporaryCookieFileName($dir);

}

/**

* 设置CURL参数并发送请求,获取响应内容

* @access private

* @param $curlOptions array curl设置参数数组

* @return string|false 访问成功,按字符串形式返回获取的信息;否则返回false

*/

public function getResponseText($curlOptions) {

/* 设置CURLOPT_RETURNTRANSFER为true */

if(!isset($curlOptions[CURLOPT_RETURNTRANSFER]) || $curlOptions[CURLOPT_RETURNTRANSFER] == false) {

$curlOptions[CURLOPT_RETURNTRANSFER] = true;

}

/* 初始化curl模块 */

$curl = curl_init();

/* 设置curl选项 */

curl_setopt_array($curl, $curlOptions);

/* 发送请求并获取响应信息 */

$responseText = '';

try {

$responseText = curl_exec($curl);

if(($errno = curl_errno($curl)) != CURLM_OK) {

$errmsg = curl_error($curl);

throw new Exception($errmsg, $errno);

}

} catch (Exception $e) {

//exceptionDisposeFunction($e);

//print_r($e);

$responseText = false;

}

/* 关闭curl模块 */

curl_close($curl);

/* 返回结果 */

return $responseText;

}

/**

* 将Unicode字符串(u0000)转化为utf-8字符串,工具函数

* @access private

* @static

* @param $string string Unicode字符串

* @return string utf-8字符串

*/

public function unicodeToUtf8($string) {

$string = str_replace('u', '', strtolower($string));

$length = strlen($string) / 4;

$stringResult = '';

for($i = 0; $i < $length; $i++) {

$charUnicodeHex = substr($string, $i * 4, 4);

$unicodeCode = hexdec($charUnicodeHex);

$utf8Code = '';

if($unicodeCode < 128) {

$utf8Code = chr($unicodeCode);

} else if($unicodeCode < 2048) {

$utf8Code .= chr(192 + (($unicodeCode - ($unicodeCode % 64)) / 64));

$utf8Code .= chr(128 + ($unicodeCode % 64));

} else {

$utf8Code .= chr(224 + (($unicodeCode - ($unicodeCode % 4096)) / 4096));

$utf8Code .= chr(128 + ((($unicodeCode % 4096) - ($unicodeCode % 64)) / 64));

$utf8Code .= chr(128 + ($unicodeCode % 64));

}

$stringResult .= $utf8Code;

}

return $stringResult;

}

private function getTemporaryCookieFileName($dir='.') {

return (str_replace("", '/', tempnam($dir, 'tmp')));

}

}

 
例子2
<?php

//curl类

class Curl

{

    function Curl(){

        return true;

    }

     

    function execute($method, $url, $fields='', $userAgent='', $httpHeaders='', $username='', $password=''){

        $ch = Curl::create();

        if(false === $ch){

            return false;

        }

        if(is_string($url) && strlen($url)){

            $ret = curl_setopt($ch, CURLOPT_URL, $url);

        }else{

            return false;

        }

        //是否显示头部信息

        curl_setopt($ch, CURLOPT_HEADER, false);

        //

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        if($username != ''){

            curl_setopt($ch, CURLOPT_USERPWD, $username . ':' . $password);

        }

        $method = strtolower($method);

        if('post' == $method){

            curl_setopt($ch, CURLOPT_POST, true);

            if(is_array($fields)){

                $sets = array();

                foreach ($fields AS $key => $val){

                    $sets[] = $key . '=' . urlencode($val);

                }

                $fields = implode('&',$sets);

            }

            curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);

        }else if('put' == $method){

            curl_setopt($ch, CURLOPT_PUT, true);

        }

        //curl_setopt($ch, CURLOPT_PROGRESS, true);

        //curl_setopt($ch, CURLOPT_VERBOSE, true);

        //curl_setopt($ch, CURLOPT_MUTE, false);

        curl_setopt($ch, CURLOPT_TIMEOUT, 10);//设置curl超时秒数

        if(strlen($userAgent)){

            curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);

        }

        if(is_array($httpHeaders)){

            curl_setopt($ch, CURLOPT_HTTPHEADER, $httpHeaders);

        }

        $ret = curl_exec($ch);

        if(curl_errno($ch)){

            curl_close($ch);

            return array(curl_error($ch), curl_errno($ch));

        }else{

            curl_close($ch);

            if(!is_string($ret) || !strlen($ret)){

                return false;

            }

            return $ret;

        }

    }

     

    function post($url, $fields, $userAgent = '', $httpHeaders = '', $username = '', $password = ''){

        $ret = Curl::execute('POST', $url, $fields, $userAgent, $httpHeaders, $username, $password);

        if(false === $ret){

            return false;

        }

        if(is_array($ret)){

            return false;

        }

        return $ret;

    }

     

    function get($url, $userAgent = '', $httpHeaders = '', $username = '', $password = ''){

        $ret = Curl::execute('GET', $url, '', $userAgent, $httpHeaders, $username, $password);

        if(false === $ret){

            return false;

        }

        if(is_array($ret)){

            return false;

        }

        return $ret;

    }

     

    function create(){

        $ch = null;

        if(!function_exists('curl_init')){

            return false;

        }

        $ch = curl_init();

        if(!is_resource($ch)){

            return false;

        }

        return $ch;

    }

}

?>

用法

GET用法:

$curl = new Curl();

$curl->get('https://3water.com/');

POST用法:
$curl = new Curl();

$curl->get('https://3water.com/', 'p=1&time=0′);

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
用PHP实现验证码功能
Oct 09 PHP
利用PHP动态生成VRML网页
Oct 09 PHP
PHP实现域名whois查询的代码(数据源万网、新网)
Feb 22 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
Dec 01 PHP
ThinkPHP3.0略缩图不能保存到子目录的解决方法
Sep 30 PHP
php判断终端是手机还是电脑访问网站的思路及代码
Apr 24 PHP
ueditor 1.2.6 使用方法说明
Jul 24 PHP
PHP中shuffle数组值随便排序函数用法
Nov 21 PHP
PHP实用函数分享之去除多余的0
Feb 06 PHP
PHP读MYSQL中文乱码的快速解决方法
Oct 01 PHP
PHP会话控制实例分析
Dec 24 PHP
Laravel validate error处理,ajax,json示例
Oct 25 PHP
PHP使用ob_start生成html页面的方法
Nov 07 #PHP
PHP实现HTML生成PDF文件的方法
Nov 07 #PHP
PHP面向对象精要总结
Nov 07 #PHP
PHP使用feof()函数读文件的方法
Nov 07 #PHP
php几个预定义变量$_SERVER用法小结
Nov 07 #PHP
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
Nov 06 #PHP
php中常见的sql攻击正则表达式汇总
Nov 06 #PHP
You might like
全国FM电台频率大全 - 25 云南省
2020/03/11 无线电
PHP之变量、常量学习笔记
2008/03/27 PHP
php array_merge下进行数组合并的代码
2008/07/22 PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
2014/07/25 PHP
CMS中PHP判断系统是否已经安装的方法示例
2014/07/26 PHP
php+mysql查询实现无限下级分类树输出示例
2016/10/03 PHP
PHP并发查询MySQL的实例代码
2017/08/09 PHP
Array对象方法参考
2006/10/03 Javascript
IE和Mozilla的兼容性汇总event
2007/08/12 Javascript
JavaScript prototype对象的属性说明
2010/03/13 Javascript
BOM与DOM的区别分析
2010/10/26 Javascript
js有序数组的连接问题
2013/10/01 Javascript
一个JavaScript变量声明的知识点
2013/10/28 Javascript
微信小程序 跳转传参数与传对象详解及实例代码
2017/03/14 Javascript
利用node.js如何创建子进程详解
2017/12/09 Javascript
解决Linux无法正常安装与卸载Node.js的方法
2018/01/19 Javascript
Vue使用mixins实现压缩图片代码
2018/03/14 Javascript
Element input树型下拉框的实现代码
2018/12/21 Javascript
解决layer 动态加载select 失效的问题
2019/09/18 Javascript
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
Vue实现渲染数据后控制滚动条位置(推荐)
2019/12/09 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
2020/03/05 Javascript
Python 深入理解yield
2008/09/06 Python
python optparse模块使用实例
2015/04/09 Python
Python实现给文件添加内容及得到文件信息的方法
2015/05/28 Python
python 发送json数据操作实例分析
2019/10/15 Python
CSS 3.0文字悬停跳动特效代码
2020/10/26 HTML / CSS
HTML5画渐变背景图片并自动下载实现步骤
2013/11/18 HTML / CSS
HTML5新特性 多线程(Worker SharedWorker)
2017/04/24 HTML / CSS
日本索尼音乐商店:Sony Music Shop
2018/07/17 全球购物
迷你分体式空调:SoGoodToBuy
2018/08/07 全球购物
MAC彩妆澳洲官网:M·A·C AU
2021/01/17 全球购物
联强国际笔试题面试题
2013/07/10 面试题
2014年会计个人工作总结
2014/11/24 职场文书
公司财务部岗位职责
2015/04/14 职场文书
无违反计划生育证明格式
2015/06/24 职场文书