php常用類之curl請求

<?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;    
	
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章