php常用类之curl请求

来源:互联网 发布:xp网络共享 编辑:程序博客网 时间:2024/06/05 00:20
<?php/*** @desc curl抓取类* @param $url 抓取地址* @param $request 请求类型 GET POST* @param $data 需发送的数据* @param $head 是否显示头信息 TRUE FALSE* @param $cookies 获取cookies 1 传递cookies文件 2 保存cookies文件* @return String* @date 2017-05-22*/public function curl( $url, $request = 'GET', $data = NULL, $head = FALSE, $cookies = FALSE, $header = NULL, $timeout = 30 ){$this->cookies_file = dirname(__FILE__)."/../../theme/cookie/cookie";$ssl = substr($url, 0, 8) == "https://" ? TRUE : FALSE;//验证是否是https请求$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);  if( $head === TRUE ) {curl_setopt($ch, CURLOPT_HEADER, TRUE);//获取消息头}if(is_array($header)){//发送头信息curl_setopt($ch, CURLOPT_HTTPHEADER, $header);}//https请求if($ssl === TRUE) {curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //信任任何证书curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); //不检查证书中是否设置域名  } curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);//设置不自动显示内容  //POST请求if($request == 'POST') {curl_setopt($ch, CURLOPT_POST, TRUE); is_array($data) && $data = http_build_query($data);curl_setopt($ch, CURLOPT_POSTFIELDS, $data);  }//保存cookiesif($cookies == 2) {curl_setopt($ch, CURLOPT_COOKIEJAR, $this->cookies_file );}//需传递COOKIE文件if($cookies == 1) {curl_setopt($ch, CURLOPT_COOKIEFILE, $this->cookies_file );}$return = curl_exec($ch);if( $error = curl_error($ch) ) {throw new \Exception($error);}curl_close($ch); return $return;    }