<?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);
}
//保存cookies
if($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;
}
php常用类之curl请求
最新推荐文章于 2024-04-26 08:41:57 发布