第一个帖子,不留遗憾。
<?php
/**
* @author Wonly <public@wonlycms.com>
* @date 2016-7-19
*/
if(!function_exists('__Curl()')){
/**
* CURL操作方法
* @param String $url 请求的地址 必须带上协议 如果是https 还请自行使用$全局变量Curl_option进行参数配置
* @param string $data 请求的参数 当参数被设置时 直接自动切换到POST请求 $method 参数失效
* @param string $method 请求的方法 默认支持 GET/POST
* @return ArrayObject 返回值为一个数组对象
* result 请求返回的body体
* info 有curl_getinfo()获得的请求信息
* erron 错误代码curl_erron()提供
* error 错误提示curl_error()提供
* 特殊说明:
* 如果请求发生错误 那么result将被设置为错误信息
*/
function &__Curl($url,$data=NULL,$method='get'){
global $Curl_cookie,$Curl_headers,$Curl_option;//这些参数都不需要通过函数传值的方式传递
/**
* $Curl_cookie 当此参数被设置为任意非False值时 将会启用cookie支持 以用于维持会话 通过函数 tempnam()自动创建
* $Curl_headers 此参数只接受数组作为参数 一个数组单元对应一行headers信息 用于http请求头
* $Curl_option 此参数只接受数组作为参数 数组的key为CURL的选项 value为值
* 参数传递方式:
* 在外部直接声明变量使用即可 无须手动传入
* Demo:
* <?php
* $Curl_cookie = True;
* $result = __curl('http://www.baidu.com');
* var_dump($result);
*/
$url = trim($url);//url去除首尾空
$method = trim(strtolower($method));//转换为小写
$ch = curl_init();//初始化CURL语柄
curl_setopt($ch, CURLOPT_URL, $url);//设置请求地址
curl_setopt($ch, CURLOPT_RETURNTRANSFER, True);//保存会话结果
if($method=='post'||(!empty($data))){//如果是post请求
curl_setopt($ch, CURLOPT_POST, True);//设置POST为True
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//插入请求的数据
}else{//否则是GET请求
curl_setopt($ch, CURLOPT_HTTPGET, True);//切换到GET请求
}
if(($Curl_option!=NULL)&&is_array($Curl_option)){//curl setopt是否被设置 且为数组
curl_setopt_array($ch, $Curl_option);//进行设置
}
if($Curl_cookie!=NULL){//cookie支持是否被打开
if(!file_exists($Curl_cookie)){//检测上一个参数是不是文件 且存在
$Curl_cookie = tempnam('tmp','co');//如果不存在 则自动创建 并保存
}
curl_setopt($ch, CURLOPT_COOKIEJAR, $Curl_cookie);//每次都写入cookie
curl_setopt($ch, CURLOPT_COOKIEFILE, $Curl_cookie);//每次都读取cookie
}
if(($Curl_headers!=NULL)&&is_array($Curl_headers)){//如果请求头行被设置且为数组
curl_setopt($ch, CURLOPT_HTTPHEADER, $Curl_headers);//设置请求行
}
$result = curl_exec($ch);
$info = curl_getinfo($ch);
$error=$erron=NULL;
if($erron = curl_errno($ch)){
$result=$error = curl_error($ch);
}
$out = new ArrayObject();
$out->result = $result;
$out->info = $info;
$out->erron = $erron;
$out->error = $error;
return $out;
}
}
/*亮瞎眼的外部扩展开始*/
$Curl_cookie=True;//打开cookie
$Curl_option[CURLOPT_TIMEOUT]=5;//5秒超时
$Curl_option[CURLOPT_SSL_VERIFYPEER]=FALSE;//不验证SSL证书
/*亮瞎眼的外部扩展结束*/
$result = __Curl('https://hu60.cn/q.php/index.index.html');//访问地址
print_r($result->result);//打印结果结果
print_r($result->info);//打印信息
print_r($result->erron);//打印错误号
print_r($result->error);//打印错误信息