2015年8月18日 星期二

【PHP】CURL HTTPS POST


function curl_file_get_contents($url,$request=array()){

    /*if ($request){
        $req = '';
        foreach($request as $key=>$val){ $req .= $key.'='.$val.'&';}
        $req = rtrim($req,'&');
    }*/

    $useragent = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36";
    $curl = curl_init(); // 啟動一個CURL會話
    curl_setopt($curl, CURLOPT_URL, $url); // 要訪問的地址
    curl_setopt($curl, CURLOPT_REFERER, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 對認證證書來源的檢查
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 從證書中檢查SSL加密算法是否存在
    curl_setopt($curl, CURLOPT_USERAGENT, $useragent); // 模擬用戶使用的瀏覽器
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自動跳轉
    curl_setopt($curl, CURLOPT_ENCODING, "UTF-8"); // 編碼
    curl_setopt($curl, CURLOPT_COOKIE, "cookieLangId=zh_tw;"); // 傳送cookie
    curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自動設置Referer
    curl_setopt($curl, CURLOPT_POST, count($request)); // 發送一個常規的Post請求
    curl_setopt($curl, CURLOPT_POSTFIELDS, $req); // Post提交的數據包
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); // 連線時間
    curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 設置超時限制防止死循環
    curl_setopt($curl, CURLOPT_HEADER, 0); // 顯示返回的Header區域內容
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 獲取的信息以文件流的形式返回
    $r = curl_exec($curl); // 執行操作
    if (curl_errno($curl)) {
       echo 'Errno'.curl_error($curl);//捕抓異常
    }
    curl_close($curl); // 關閉CURL會話
    
                
    return $r;
}