PHP封装CURL扩展

<?php

/**
* @description: 封装CURL扩展
* @date: 2014-07-28 16:04
*/

/**
* @编码规范
* @class 类名首字母大写,类名为多个单词, 每个大字首字母大写 eg: class Curl , class CurlPage
* @variable 变量名小写, 变量名为多个单词, 每个单词小写,使用下划线_分割 eg: $curl_result
* @function 函数名与类名规则相同 eg: function SendRequest
* @params 函数形参规则与变量名相同
* @class-variable 成员变量,以下划线结尾,多个单词使用下划线分隔. eg: private $host_name_
*/
/**
* @要求
*
*/
class Curl{

/**
* @请求的host
*/
private $host_;

/**
* @curl 句柄
*/
private $ch_;

/**
* @超时限制时间
*/
const time_=5;
/**
* @请求的设置
*/
private $options_;

/**
* @保存请求头信息
*/
private $request_header_;

/**
* @保存响应头信息
*/
private $response_header_;

/**
* @body_ 用于保存curl请求返回的结果
*/
private $body_;

/**
* @读取cookie
*/
private $cookie_file_;

/**
* @写入cookie
*/
private $cookie_jar_;

/**
* @todo proxy
* @构造函数,初始化CURL回话
*/
public function Start($url){
$this->ch_ = curl_init($url);
curl_setopt($this->ch_, CURLOPT_HEADER, 1);
curl_setopt($this->ch_, CURLOPT_RETURNTRANSFER , 1 );
}

/**
* @返回响应头
*/
public function ResponseHeader($url){
if (!function_exists(‘http_parse_headers‘)) {
function http_parse_headers ($raw_headers){
$headers = array();
foreach (explode("\n", $raw_headers) as $i => $h) {
$h = explode(‘:‘, $h, 2);
if (isset($h[1])) {
if(!isset($headers[$h[0]])) {
$headers[$h[0]] = trim($h[1]);
} else if(is_array($headers[$h[0]])) {
$tmp = array_merge($headers[$h[0]],array(trim($h[1])));
$headers[$h[0]] = $tmp;
} else {
$tmp = array_merge(array($headers[$h[0]]),array(trim($h[1])));
$headers[$h[0]] = $tmp;
}
}
}
return $headers;
}
}
$this->Start($url);
curl_setopt($this->ch_, CURLOPT_TIMEOUT, Curl::time_);
$this->body_=$this->Execx();
$header_size = curl_getinfo($this->ch_, CURLINFO_HEADER_SIZE);
$this->response_header_ = substr($this->body_, $start = 0, $offset = $header_size);
$this->response_header_ = http_parse_headers($this->response_header_);
print_r($this->response_header_);
return $this->Close($this->body_);
}
/**
* @读取cookie
*/
public function LoadCookie($url,$cookie_file){
$this->Start($url);
curl_setopt($this->ch_, CURLOPT_COOKIE, 1);
curl_setopt($this->ch_, CURLOPT_COOKIEFILE , $cookie_file);
$this->body_=$this->Execx();
return $this->Close($this->body_);
}

/**
* @写入cookie
*/
public function SaveCookie($url){
$this->Start($url);
curl_setopt($this->ch_, CURLOPT_COOKIE, 1);
curl_setopt($this->ch_, CURLOPT_COOKIEFILE ,‘cookie.txt‘);
curl_setopt($this->ch_, CURLOPT_COOKIEJAR , ‘cookie.txt‘);
$this->body_=$this->Execx();
return $this->Close($this->body_);
}

/**
* @设置HEADER
*/

public function SetHeader($headers = null){
if (is_array($headers) && count($headers) > 0) {
curl_setopt($this->ch_, CURLOPT_HTTPHEADER, $headers);
}
}

/**
* @GET请求
*/
public function Get($url, array $params = array()) {
if ($params) {
if (strpos($url, ‘?‘)) {
$url .= "&".http_build_query($params);
}
else {
$url .= "?".http_build_query($params);
}
}
$this->Start($url);
curl_setopt($this->ch_, CURLOPT_TIMEOUT, Curl::time_);
if (strpos($url, ‘https‘) === 0) {
curl_setopt($this->ch_, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($this->ch_, CURLOPT_SSL_VERIFYPEER, 0);
}
$this->body_=$this->Execx();
return $this->Close($this->body_);
}

/**
* @POST请求
*/
public function Post($url, array $params = array()) {
$this->Start($url);
curl_setopt($this->ch_, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($this->ch_, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded"));
curl_setopt($this->ch_, CURLOPT_POST, true);
curl_setopt($this->ch_, CURLOPT_TIMEOUT, Curl::time_);
if ($params) {
curl_setopt($this->ch_, CURLOPT_POSTFIELDS, http_build_query($params));
}
$this->body_=$this->Execx();
return $this->Close($this->body_);
}

/**
* @tips: google http head 方法
*/
public function Head($url, array $params = array()) {
$this->Start($url);
curl_setopt($this->ch_, CURLOPT_TIMEOUT, Curl::time_);
curl_setopt($this->ch_, CURLOPT_RETURNTRANSFER , 0);
curl_setOpt($this->ch_,CURLOPT_NOBODY, true);
$this->body_=$this->Execx();
return $this->Close($this->body_);
}

/**
* @执行CURL会话
*/
public function Execx(){
return curl_exec($this->ch_);
}

/**
* @关闭CURL句柄
*/
public function Close($body_){
if ($body_ === false) {
echo "CURL Error: " . curl_error($body_);
return false;
}
curl_close($this->ch_);
return $body_;
}
}
时间: 2024-08-19 15:37:13

PHP封装CURL扩展的相关文章

添加FB登陆时,需要curl扩展

安装curl扩展遇到一个傻逼问题 [[email protected] openssl]# /usr/local/php/bin/phpizeCannot find config.m4.Make sure that you run '/usr/local/php/bin/phpize' in the top level source directory of the module 对于这个问题其实是要到php的源码包中去执行的 cd php-5.5.30/ext/curl /usr/local/

在PHP中开启CURL扩展,使其支持curl()函数

在用PHP开发CMS的时候,要用到PHP的curl函数,默认状态下,这个函数需要开启CURL扩展,有主机使用权的,可通过PHP.ini文件开启本扩展,方法如下: 1.打开php.ini,定位到;extension=php_curl.dll,将其前面的;去掉. 2.将PHP目录下ext目录中的:php_curl.dll.libeay32.dll和ssleay32.dll三个文件复制到系统system32目录下,重启IIS或apache. 3.为了确保是否已开启CURL扩展,可通过下述代码进行测试:

设置php在apache下加载ini配置文件路径,~和curl扩展无法加载的问题

php以模块的方式加载到apache的时候,php配置文件目录为C:windows.这不合理,应该选择php本身目录的配置文件加载,可以在apache的httpd.conf配置文件里设置PHPIniDir "这里填写php的配置文件目录". 还有curl扩展无法加载的问题,这个问题非常奇怪,其他的扩展都加载正常,唯独curl的扩展无法加载.百度搜索出来前几位的解决办法都无效,其中有一个的方法解决了问题,但我还是不知道这个问题的根本原因在哪.问题是这样解决的,把php的目录放到环境变量中

Windows下CURL扩展无效之终极解决办法

最近安装了一个opencart的B2C电商网站,网站需要开启CURL扩展,参考网上方法木有成功,最后研究了很久,现在整理出来,和大家分享一下,希望大家少走弯路. 不废话,直接来干货!操作分四步: 1.启动配置文件php.ini文件php_curll.dll扩展,至于配置文件php.ini的文件路径根据各位的安装环境而定,我的目录是"D:\Develop\PHP\"下: 2.网上常用的libeay32.dll.ssleay32.dll.php_curll.dll拷贝到"C:\S

php开启curl扩展

开启php curl函数库的步骤 1).去掉php.ini 文件里;extension=php_curl.dll前面的; /*用 echo phpinfo();查看php.ini的路径*/ 2).把php5/libeay32.dll,ssleay32.dll复制到系统目录windows/下 3).重启apache php开启curl扩展,布布扣,bubuko.com

windows (windows server 2003 64位)开启 curl扩展 (php-5.4.5-Win32-VC9-x86.zip,httpd-2.2.22-win32-x86-no_ssl.msi ,mysql-5.5.27-win32.msi)

(1)在windows下开启curl扩展,php.ini中 extension_dir路径是对的,extension=php_curl.dll前面的分号也去掉了,php加载的php.ini也是对,但是就是没有效果,上网百度,解决了. 需要将php目录中的libeay32.dll, ssleay32.dll, php5ts.dll, 文件到 system32 目录.重启apache即可. (2)在windows server 2003 64位 中  需要将libeay32.dll, ssleay3

linux php源码包 安装openssl 和curl 扩展

1. 安装openssl 解压php的源码包 tar zxvf php-5.3.8.tar.gz cd soft/php-5.3.8/ext/openssl mv config0.m4 config.m4                            否则报错:找不到config.m4 /opt/local/php-5.3.8/bin/phpize ./configure --with-openssl --with-php-config=/opt/local/php-5.3.8/bin/

wecenter—开启CURL扩展,让服务器支持PHP curl函数(远程采集)

curl().file_get_contents().snoopy.class.php这三个远程页面抓取或采集中用到的工具, 默迹还是侵向于用snoopy.class.php,因为他效率比较高且不需要服务器特定配置支持,在普通虚拟主机中即可使用: file_get_contents()效率稍低些,常用失败的情况.curl()效率挺高的,支持多线程,不过需要开启下curl扩展. 下面是curl扩展开启的步骤: 1.将PHP文件夹下的三个文件php_curl.dll,libeay32.dll,ssl

Linux中PHP如何安装curl扩展方法

如果php已经在系统编译好,后来又需要添加新的扩展. 一种方式就是重新完全编译php,另一种方式就是单独编译扩展库,以extension的形式扩展. 下面以安装curl扩展为例: 1.下载curl安装包.(我的php是4.4.4的,下载最新的curl 7.16 不能使用,最后下载7.14的才可以,所以要注意一下版本问题) ./configuremake php 要求curl的目录要有include和lib目录,并且include下要有easy.h 和curl.h两个文件,lib下要有libcur