您好,登錄后才能下訂單哦!
CURL是利用URL語法在命令行方式下工作的開源文件傳輸工具。
PHP通過默認支持CURL擴展庫,可以實現開發中常見的傳輸功能:
實現遠程獲取和采集內容
實現PHP網頁版的FTP上傳和下載
實現模擬登陸,例如一個郵件系統,CURL可以模擬Cookies
實現接口對接(API)、數據傳輸,例如微信公眾平臺的開放接口訪問
實現模擬Cookie等,登錄狀態下才可以操作的一些屬性
PHP的CURL功能擴展模塊提供了很多函數,但在所有不走之前要先通過curl_int()創建一個新的CURL會話
$ch = curl_init(); //創建curl資源
現在已成功創建一個curl會話,下一步傳遞一個URL給curl_setopt()
curl_septopt($ch,CURLOPT_URL,"mysens.blog.51cto.com"); //設置URL
通過前兩步我們的準備工作就完成了,接下來就是獲取URL站點內容并打印出來
curl_exec($ch); //執行,獲取URL內容并輸出
最后關閉CURL會話,釋放資源
curl_close($ch); //釋放資源
這樣就完成了一次簡單curl會話。
如果我們需要獲取內容但不輸出,我們可以加入以下代碼控制
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); //任何一個非0或true值都行
當然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()的更多設置
http://php.net/manual/zh/function.curl-setopt.php
----------------------------
下面是幾個常用功能的簡單說明
上傳文件
//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認證
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt(CURLOPT_USERPWD, '[username]:[password]')
4.代理服務器
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.設置SSL
//不進行SSL認證 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庫噢
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。