CURL操作函数 随心扩展

@Ta 2016-07-19 2180点击
第一个帖子,不留遗憾。
<?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);//打印错误信息



回复列表(2|隐藏机器人聊天)
添加新回复
回复需要登录