PHP-curl通過GET或POST方式實現http及https請求

2020-07-16 10:05:51
PHP-curl實現GET或POST請求

通過Curl方式很容易獲取目標網站資料

支援協定:Http、Https

可根據具體需求附帶表單、cookie。

GET請求:

/**
 * curl模擬get進行 http 或 https url請求(可選附帶cookie)
 * @parambool $type請求型別:true為https請求,false為http請求 
 * @paramstring $url請求地址
 * @paramstring$cookie cookie字串
 * @returnstring返回字串
 */
function curl_get($type, $url, $cookie) {//type與url為必傳、若無cookie則傳空字串
  if (empty($url)) {
         return false;
     }
     $ch = curl_init();//初始化curl
     curl_setopt($ch, CURLOPT_URL,$url);//抓取指定網頁
     curl_setopt($ch, CURLOPT_HEADER, 0);//設定header
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求結果為字串且輸出到螢幕上
if($type){  //判斷請求協定http或https
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳過證書檢查
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);  // 從證書中檢查SSL加密演算法是否存在
}
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模擬使用者使用的瀏覽器
if(!empty($cookie))curl_setopt($ch,CURLOPT_COOKIE,$cookie);  //設定cookie
     $data = curl_exec($ch);//執行curl
     curl_close($ch);
     return $data;
}

POST請求:

/**
 * curl模擬post進行 http 或 https url請求(可選攜帶表單,cookie)
 * @parambool $type請求型別:true為https請求,false為http請求
 * @paramstring$url請求地址
 * @paramarray $post_data請求表單資料array("key1"=>"value1","key2"=>"value2"),表單以陣列方式傳輸
 * @paramstring$cookiecookie字串 
 * @returnstring返回字串
 */
function curl_post($type, $url, $post_data, $cookie) {//type與url為必傳  ,表單post_data陣列,和cookie字串選傳
  if (empty($url)) {
         return false;
     }
    if(!empty($post_data)){
     $params = '';
      foreach ( $post_data as $k => $v ) 
      { 
          $params.= "$k=" . urlencode($v). "&" ;
      }
      $params = substr($params,0,-1);
    } 
     $ch = curl_init();//初始化curl
     curl_setopt($ch, CURLOPT_URL,$url);//抓取指定網頁
     curl_setopt($ch, CURLOPT_HEADER, 0);//設定header
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求結果為字串且輸出到螢幕上
if($type){  //判斷請求協定http或https
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳過證書檢查
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);  // 從證書中檢查SSL加密演算法是否存在
}
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模擬使用者使用的瀏覽器
if(!empty($cookie))curl_setopt($ch,CURLOPT_COOKIE,$cookie);  //設定cookie
     if(!empty($post_data))curl_setopt($ch, CURLOPT_POSTFIELDS, $params); //設定表單
curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
     $data = curl_exec($ch);//執行curl
     curl_close($ch);
     return $data;
}

推薦:《PHP教學

以上就是PHP-curl通過GET或POST方式實現http及https請求的詳細內容,更多請關注TW511.COM其它相關文章!