深入理解curl類,可用於類比get,post和curl下載_PHP教程

來源:互聯網
上載者:User
如下所示:
複製代碼 代碼如下:
class Curl {
/*
* get 方式擷取訪問指定地址
* @param string url 要訪問的地址
* @param string cookie cookie的存放地址,沒有則不發送cookie
* @return string curl_exec()擷取的資訊
* @author andy
**/
public function get( $url, $cookie='' )
{
// 初始化一個cURL會話
$curl = curl_init($url);
// 不顯示header資訊
curl_setopt($curl, CURLOPT_HEADER, 0);
// 將 curl_exec()擷取的資訊以檔案流的形式返回,而不是直接輸出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 使用自動跳轉
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
if(!empty($cookie)) {
// 包含cookie資料的檔案名稱,cookie檔案的格式可以是Netscape格式,或者只是純HTTP頭部資訊存入檔案。
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie);
}
// 自動化佈建Referer
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
// 執行一個curl會話
$tmp = curl_exec($curl);
// 關閉curl會話
curl_close($curl);
return $tmp;
}
/*
* post 方式類比請求指定地址
* @param string url 請求的指定地址
* @param array params 請求所帶的
* #patam string cookie cookie存放地址
* @return string curl_exec()擷取的資訊
* @author andy
**/
public function post( $url, $params, $cookie )
{
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, 0);
// 對認證認證來源的檢查,0表示阻止對認證的合法性的檢查。
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
// 從認證中檢查SSL密碼編譯演算法是否存在
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);
//類比使用者使用的瀏覽器,在HTTP請求中包含一個”user-agent”頭的字串。
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
//發送一個常規的POST請求,類型為:application/x-www-form-urlencoded,就像表單提交的一樣。
curl_setopt($curl, CURLOPT_POST, 1);
// 將 curl_exec()擷取的資訊以檔案流的形式返回,而不是直接輸出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 使用自動跳轉
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
// 自動化佈建Referer
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
// Cookie地址
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie);
// 全部資料使用HTTP協議中的"POST"操作來發送。要傳送檔案,
// 在檔案名稱前面加上@首碼並使用完整路徑。這個參數可以通過urlencoded後的字串
// 類似'para1=val1¶2=val2&...'或使用一個以欄位名為索引值,欄位資料為值的數組
// 如果value是一個數組,Content-Type頭將會被設定成multipart/form-data。
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($params));
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
/**
* 遠程下載
* @param string $remote 遠程圖片地址
* @param string $local 本地儲存的地址
* @param string $cookie cookie地址 選擇性參數由
* 於某些網站是需要cookie才能下載網站上的圖片的
* 所以需要加上cookie
* @return void
* @author andy
*/
public function reutersload($remote, $local, $cookie= '') {
$cp = curl_init($remote);
$fp = fopen($local,"w");
curl_setopt($cp, CURLOPT_FILE, $fp);
curl_setopt($cp, CURLOPT_HEADER, 0);
if($cookie != '') {
curl_setopt($cp, CURLOPT_COOKIEFILE, $cookie);
}
curl_exec($cp);
curl_close($cp);
fclose($fp);
}
}

http://www.bkjia.com/PHPjc/327550.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/327550.htmlTechArticle如下所示: 複製代碼 代碼如下: ?php class Curl { /* * get 方式擷取訪問指定地址 * @param string url 要訪問的地址 * @param string cookie cookie的存放地址...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.