CURL獲取資料-支援cookie模擬登入
<?php
$url = 'http://abc.com';
$method = 'get';
$optionArr = array();
$optionArr['cookie'] = 'userid=1641281255339_h8wgml1013;';
$result = curlDeal($url, $method, array(), $optionArr);
print_r($result);
die;
/**
* CURL
* @param string $url 網址
* @param string $method GET/POST
* @param array $dataArr 引數
* @param array $optionArr 選項 timeout表示最大執行時間,cookie表示cookie資訊
* @return array
*/
function curlDeal($url, $method, $dataArr = array(), $optionArr = array())
{
$method = strtolower($method);
//GET方式
if ('get' == $method) {
$url = $url . '?' . http_build_query($dataArr);
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
//設定返回資訊中是否包含響應資訊頭,true表示輸出資訊頭,false表示不輸出
curl_setopt($ch, CURLOPT_HEADER, false);
//設定獲取的資訊,true表示以檔案流的形式返回,false表示直接輸出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//HTTPS
if (stripos($url, "https://") !== FALSE) {
//規避SSL驗證
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
//跳過HOST驗證
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
}
//POST方式
if ('post' == $method) {
curl_setopt($ch, CURLOPT_POST, true);
if(is_array($dataArr) && !empty($dataArr)) {
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($dataArr));
}
}
//設定cookie
if (isset($optionArr['cookie']) && $optionArr['cookie']) {
$headers = array();
$headers[] = "Cookie: " . $optionArr['cookie'];
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
}
//設定最長執行時間
if (isset($optionArr['timeout']) && $optionArr['timeout'] > 0) {
curl_setopt($ch, CURLOPT_TIMEOUT, $optionArr['timeout']);
}
$content = curl_exec($ch);
//輸出請求狀態碼
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return array(
'statusCode' => $statusCode,
'content' => $content
);
}