加入收藏 | 设为首页 | 会员中心 | 我要投稿 孝感站长网 (https://www.0712zz.com.cn/)- 运营、云管理、管理运维、云计算、大数据!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP封装CURL扩展类实例

发布时间:2022-06-21 09:31:08 所属栏目:PHP教程 来源:互联网
导读:这篇文章主要介绍了PHP封装CURL扩展类,实例分析了基于curl发送post、get请求及操作cookie等相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下。 本文实例讲述了PHP封装CURL扩展类,分享给大家供大家参考,具体如下: ?php /** * @description: 封装CURL扩
   这篇文章主要介绍了PHP封装CURL扩展类,实例分析了基于curl发送post、get请求及操作cookie等相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下。
 
  本文实例讲述了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_;
  }
  } 

(编辑:孝感站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读