1. 程式人生 > 其它 >CURL獲取資料-支援cookie模擬登入

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