程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP之curl

PHP之curl

編輯:關於PHP編程

PHP之curl


 當我第一次接觸curl的時候,看文檔,以及網上search各種資料,官方(http://cn2.php.net/manual/en/intro.curl.php)的解釋是,這是某大牛寫的一個libcurl庫,PHP支持該擴展庫,允許我們以各種不同的協議(http、https、ftp、telnet、file...)訪問各種不同的服務器,支持post、put、ftp或基於表單的文件上傳,支持cookie、代理等等。        好像還是似懂非懂,我覺得最簡單的解釋是,curl是一個工具集,由libcurl擴展庫支持,包含一些函數,使用這些函數可以模擬我們來訪問某些地址,也就是,我們手動在浏覽器地址欄裡面輸入http://www.baidu.com,來訪問百度,curl就可以代替這種手動操作,以程序的形式來實現這一過程,這個操作、過程得到的結果,是浏覽器給了我們一個百度搜索的首頁。        既然curl是一個工具集,有很多函數可供調用,可以想象成,在地址欄輸入URL(可能會帶一些參數),當輸入完點擊回車的時候,相當於調用了某些函數,這些函數在百度某台或某幾台服務器上的腳本上寫著,函數運行完後會有某種效果,比如返回了值,或者沒返回值,或者打印了一些東西,在這裡呈現了一個頁面給你,而curl能實現的功能,比簡單展示一個頁面多得多,這些各自不同的功能是通過curl_setopt函數來實現的。比如在接SDK的時候,別人提供的是訪問地址形式的API,這時curl就大顯身手。        1.get實現   復制代碼 <?php     $url = 'http://www.somesite.com';     $data = array('username'=>'Peter', 'password'=>12345);     function get($url, $data = array()){         $ch = curl_init();   // 初始化一個curl資源類型變量                  /*設置訪問的選項*/         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);  // 啟用時會將服務器服務器返回的Location: 放在header中遞歸的返回給服務器         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );  // 將獲得的數據返回而不是直接在頁面上輸出         curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_HTTP );  // 設置訪問地址用的協議類型為HTTP                 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);  // 訪問的超時時間限制為15s         $url = url.'?'.http_build_query($data);           curl_setopt($ch, CURLOPT_URL, $url);  // 設置即將訪問的URL           $result = curl_exec($ch);  // 執行本次訪問,返回一個結果         // ...                     // 針對結果的正確與否做一些操作         return $result;     }     // $result = get(%url, $data);  // 調用 復制代碼       2.post實現   復制代碼 <?php     function post($url, $data = array()){         $ch = curl_init();                     curl_setopt($ch, CURLOPT_POST, true);  // 設置為post傳遞形式         curl_setopt($ch, CURLOPT_POSTFIELDS, $data);  // 設置post傳遞的數據         curl_setopt($ch, CURLOPT_URL, $url);         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  // 設置數據以文件流的形式返回         curl_setopt($ch, CURLOPT_USERAGENT, '');  // 將用戶代理置空         curl_setopt($ch, CURLOPT_HEADER, false);  // 設置不顯示頭信息                    $result = curl_exec($ch);         $info = curl_getinfo($ch);   // 獲取本次訪問資源的相關信息                    return $result;     }   

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved