溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php中的CURL庫

發(fā)布時間:2020-06-25 03:52:05 來源:網(wǎng)絡(luò) 閱讀:410 作者:zcfortest 欄目:web開發(fā)

CURL是利用URL語法在命令行方式下工作的開源文件傳輸工具。

PHP通過默認(rèn)支持CURL擴展庫,可以實現(xiàn)開發(fā)中常見的傳輸功能:

  1. 實現(xiàn)遠(yuǎn)程獲取和采集內(nèi)容

  2. 實現(xiàn)PHP網(wǎng)頁版的FTP上傳和下載

  3. 實現(xiàn)模擬登陸,例如一個郵件系統(tǒng),CURL可以模擬Cookies

  4. 實現(xiàn)接口對接(API)、數(shù)據(jù)傳輸,例如微信公眾平臺的開放接口訪問

  5. 實現(xiàn)模擬Cookie等,登錄狀態(tài)下才可以操作的一些屬性


PHP的CURL功能擴展模塊提供了很多函數(shù),但在所有不走之前要先通過curl_int()創(chuàng)建一個新的CURL會話

$ch = curl_init();  //創(chuàng)建curl資源

現(xiàn)在已成功創(chuàng)建一個curl會話,下一步傳遞一個URL給curl_setopt()

curl_septopt($ch,CURLOPT_URL,"mysens.blog.51cto.com"); //設(shè)置URL

通過前兩步我們的準(zhǔn)備工作就完成了,接下來就是獲取URL站點內(nèi)容并打印出來

curl_exec($ch); //執(zhí)行,獲取URL內(nèi)容并輸出

最后關(guān)閉CURL會話,釋放資源

curl_close($ch); //釋放資源

這樣就完成了一次簡單curl會話。

如果我們需要獲取內(nèi)容但不輸出,我們可以加入以下代碼控制

curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); //任何一個非0或true值都行

當(dāng)然CURL也有自己的檢查錯誤語句

if(curl_exec($ch) === false){
    echo "cURL Error: ".curl_error($ch); //打印錯誤
}

一個完整的request代碼如下

function request($url,$output = true){
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,$output);
    $res = curl_exec($ch);
    if($res === false){
        trigger_error("cURL Error: ".curl_error($ch));
    }
    curl_close($ch);
    return $res;
}

在手冊中查看curl_setopt()的更多設(shè)置

http://php.net/manual/zh/function.curl-setopt.php

----------------------------

下面是幾個常用功能的簡單說明

  1. 上傳文件

//object_file 為表單名稱,$filepath為路徑 
if(version_compare(phpversion(), '5.5.0') >=0 ){
    $data = array( 'object_file' => new CURLFile($filepath) );
}else{
    $data = array( 'object_file' => '@'.$filepath ); //@符號一定要有
}

2.模擬登陸

//首先我們需要一個儲存cookie的文件地址$cookie=dirname(_FILE_).'/cookie.txt
//接著模擬登陸,需要一個包含用戶名及密碼的$post=array('usrname'=>mysens,'password'=>123456)
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($ch, CURLOPT_POST,true);
curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($post));
//登陸完成后,獲取我們需要的頁面信息
curl_setopt($ch, CURLOPT_COOKIEFILE,$cookie);

3.HTTP認(rèn)證

curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt(CURLOPT_USERPWD, '[username]:[password]')

4.代理服務(wù)器

curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, 'proxy.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, '[username]:[password]');

5.設(shè)置SSL

//不進(jìn)行SSL認(rèn)證
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
//只信任CA頒布的證書 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_CAINFO, $cacert);  
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
//信任任何證書
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);

cURL有這么多功能,下次用到URL請求時一定要想起cURL庫噢

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI