我們提供的服務(wù)有:成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、武隆ssl等。為成百上千家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的武隆網(wǎng)站制作公司
class PostCurl extends AbstractCurl {
/**
* 調(diào)用父構(gòu)造方法
*
*/
public function __construct() {
parent::__construct();
}
/**
* 實(shí)現(xiàn)cURL主體的抽象方法
*
* @param array $para
*
* @return void
*/
protected function _cUrl($para = array()) {
curl_setopt($this->_ch, CURLOPT_POST, true);
curl_setopt($this->_ch, CURLOPT_POSTFIELDS, $para['data']);
}
}
/**
* cURL抽象類
*
*/
/**
* cURL抽象類
*
*/
abstract class AbstractCurl {
/**
* cURL資源
*
* @var resource
*/
protected $_ch = null;
/**
* URL地址
*
* @var string
*/
protected $_url = '';
/**
* 是否啟用SSL模式
*
* @var boolean
*/
protected $_ssl = false;
/**
* 初始化cURL資源
*
*/
protected function __construct() {
$this->_ch = curl_init();
}
/**
* cURL抽象方法,處理POST、GET、PUT(暫不提供)
*
* @param array $para
*/
abstract protected function _cUrl($para = array());
/**
* 發(fā)送socket連接
*
* @param string $url
* @param array $para
* @param boolean $return
*
* @return mix [void|string]
*/
private function _socket($url, $para, $return) {
$this->_setUrl($url);
/*
* 強(qiáng)制轉(zhuǎn)換為boolean類型,這里不使用(boolean)與settype
*/
if (false === isset($para['header'])) {
$para['header'] = false;
} else {
$para['header'] = true;
}
curl_setopt($this->_ch, CURLOPT_HEADER, $para['header']);
curl_setopt($this->_ch, CURLOPT_TIMEOUT, 10);
/*
* 處理302
*/
if (false === isset($para['location'])) {
$para['location'] = false;
} else {
$para['location'] = true;
}
curl_setopt($this->_ch, CURLOPT_FOLLOWLOCATION, $para['location']);
unset($para['location']);
if(!empty($para['cookieFile'])){
if (false === isset($para['cookieFile'])) {
curl_setopt($this->_ch, CURLOPT_COOKIEFILE, $para['cookieFile'][0]);
curl_setopt($this->_ch, CURLOPT_COOKIEJAR, $para['cookieFile'][0]);
}
}
/*
* exec執(zhí)行結(jié)果是否保存到變量中
*/
if (true === $return) {
curl_setopt($this->_ch, CURLOPT_RETURNTRANSFER, true);
}
/*
* 是否啟用SSL驗(yàn)證
*/
if (true === $this->_ssl) {
curl_setopt($this->_ch, CURLOPT_SSL_VERIFYHOST, true);
}
/*
* 調(diào)用子類處理方法
*/
$this->_cUrl($para);
$result = curl_exec($this->_ch);
$apiStatus = curl_getinfo($this->_ch);
if(isset($apiStatus['http_code']) && 200 == $apiStatus['http_code']) {
if (true === $return) {
curl_close($this->_ch);
return $result;
}
} elseif(isset($apiStatus['http_code']) && 404 == $apiStatus['http_code']) {
curl_close($this->_ch);
return false;
} else {
curl_close($this->_ch);
return false;
}
}
/**
* 初始化URL
*
* @param string $url
*
* @return boolean [true成功 | false失敗]
*/
private function _setUrl($url) {
$this->_url = $url;
/*
* 以下代碼在PHP > 5.3有效
*/
if (false !== strstr($this->_url, 'https://', true)) {
$this->_ssl = true;
}
return curl_setopt($this->_ch, CURLOPT_URL, $this->_url);
}
/**************************公共接口***********************/
/**
* 發(fā)起通信請(qǐng)求接口
*
* @param string $url
* @param array $para
* @param boolean $return
*
* @return string
*/
final public function socket($url, $para = array(), $return = true) {
if(!empty($this->_ch)){
$this->_ch = curl_init();
}
return $this->_socket($url, $para, $return);
}
}