`
osacar
  • 浏览: 209791 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

PHP CURL类封装

    博客分类:
  • PHP
阅读更多
<?php

class Curl {

	/*
	 * get 方式获取访问指定地址
	 * @param  string url 要访问的地址
	 * @param  string cookie cookie的存放地址,没有则不发送cookie
	 * @return string curl_exec()获取的信息
	 * @author andy
	 **/
	public function get( $url, $cookie='' )
	{
		// 初始化一个cURL会话
		$curl = curl_init($url);
		// 不显示header信息
		curl_setopt($curl, CURLOPT_HEADER, 0);
		// 将 curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
		// 使用自动跳转
		curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
		if(!empty($cookie)) {
			// 包含cookie数据的文件名,cookie文件的格式可以是Netscape格式,或者只是纯HTTP头部信息存入文件。
			curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie);
		}
		// 自动设置Referer
		curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
		// 执行一个curl会话
		$tmp = curl_exec($curl);
		// 关闭curl会话
		curl_close($curl);
		return $tmp;
	}

	/*
	 * post 方式模拟请求指定地址
	 * @param  string url	请求的指定地址
	 * @param  array  params 请求所带的
	 * #patam  string cookie cookie存放地址
	 * @return string curl_exec()获取的信息
	 * @author andy
	 **/
	public function post( $url, $params, $cookie )
	{
		$curl = curl_init($url);
		curl_setopt($curl, CURLOPT_HEADER, 0);
		// 对认证证书来源的检查,0表示阻止对证书的合法性的检查。
		curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
		// 从证书中检查SSL加密算法是否存在
		curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);
		//模拟用户使用的浏览器,在HTTP请求中包含一个”user-agent”头的字符串。
		curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
		//发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样。
		curl_setopt($curl, CURLOPT_POST, 1);
		// 将 curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
		// 使用自动跳转
		curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); 
		// 自动设置Referer
		curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
		// Cookie地址
		curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie);
		// 全部数据使用HTTP协议中的"POST"操作来发送。要发送文件,
		// 在文件名前面加上@前缀并使用完整路径。这个参数可以通过urlencoded后的字符串
		// 类似'para1=val1&para2=val2&...'或使用一个以字段名为键值,字段数据为值的数组
		// 如果value是一个数组,Content-Type头将会被设置成multipart/form-data。
		curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($params));
		$result = curl_exec($curl);
		curl_close($curl);
		return $result;
	}
	/**
	 * curl 下载远程文件保存到本地
	 * @param string remote 远程地址
	 * @param string local 本地保存地址
	 * @param string cookie cookie位置由于某些网站有访
	 * 问限制例如路透社你会发现如果你没有cookie是无法获
	 * 取该网站上的内容,所以要先模拟登陆获取cookie,
	 * 再带着cookie去请求远程地址
	 * @return void
	 * @author andy
	 */
	public function curlDownload( $remote, $local, $cookie = '' ) {
		$cp = curl_init($remote);
		$fp = fopen($local,"w");
		curl_setopt($cp, CURLOPT_FILE, $fp);
		curl_setopt($cp, CURLOPT_HEADER, 0);
		if($cookie != ''){
			curl_setopt($cp, CURLOPT_COOKIEFILE, $cookie);
		}
		curl_exec($cp);
		curl_close($cp);
		fclose($fp);
	}


}

分享到:
评论

相关推荐

    PHP封装CURL扩展类

    主要介绍了PHP封装CURL扩展类,实例分析了基于curl发送post、get请求及操作cookie等相关技巧 编码规范 * @class 类名首字母大写,类名为多个单词, 每个大字首字母大写 eg: class Curl , class CurlPage * @variable...

    php实现的Curl封装类.zip

    主要介绍了php实现的Curl封装类的用法,以完整实例形式较为详细的分析了Curl封装类的定义及相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下。如果朋友们有什么更好的类,可以发送到我们PHP中文网一起学习...

    php的curl封装类

    一个php的curl封装类,基础发起curl请求函数,来源一定要设置成来自本站,要求结果为字符串且输出到屏幕上,发起get请求,发起post请求,处理发起非get请求的传输数据,发起put请求,发起delete请求。

    php实现的Curl封装类

    php实现的Curl封装类的用法,以完整实例形式较为详细的分析了Curl封装类的定义及相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下。

    php的curl封装类.zip

    一个php的curl封装类,基础发起curl请求函数,来源一定要设置成来自本站,要求结果为字符串且输出到屏幕上,发起get请求,发起post请求,处理发起非get请求的传输数据,发起put请求,发起delete请求。

    php的curl封装类用法实例.zip

    curl的一些封装用法,简单易懂

    PHP封装CURL扩展类.zip

    PHP封装CURL的扩展类

    php中curl类常用方法封装和详解

    一个php中curl类, 设置Cookie文件保存路径及文件名,模拟登录获取Cookie函数 , 模拟获取内容函数,模拟提交数据函数,php中curl类常用方法封装和详解

    php中curl类常用方法封装和详解.zip

    分享一个php中curl类, 设置Cookie文件保存路径及文件名,模拟登录获取Cookie函数 , 模拟获取内容函数,模拟提交数据函数,php中curl类常用方法封装和详解

    PHP curl 封装

    PHP 通用curl简单封装,可以获取header,灵活配置

    php的Curl处理类

    hp的curl封装类用法,以实例形式较为详细的讲述了curl封装类及其使用方法,并总结了GET与POST的用法。 使用函数之前我们要需要把php curl模块打开(libeay32.dll, ssleay32.dll, php5ts.dll, php_curl.dll) 开启php ...

    php的curl二次封装的类.zip

    关于php的curl二次封装的类,免费下载

    一个非常好用的curl封装类

    如果你对curl不熟悉,如果你想要了解curl,这个类你值得拥有,常用的方法已经封装好。

    curl 封装的类库

    项目中自己使用的时候,自己封装的类库,请大家多多指教

    php的Curl处理类.zip

    主要介绍了php的curl封装类用法,以实例形式较为详细的讲述了curl封装类及其使用方法,并总结了GET与POST的用法。 使用函数之前我们要需要把php curl模块打开(libeay32.dll, ssleay32.dll, php5ts.dll,...

    http类库:基于php curl库封装的http类库.zip

    php-httplib是一个基于php curl库封装的http类库,简单易用的同时兼顾性能及功能,可完美解决您的web请求需求!

    php的curl封装类用法实例_.docx

    php的curl封装类用法实例_.docx

    php的curl封装类用法实例

    curl的一些封装用法,简单易懂

Global site tag (gtag.js) - Google Analytics