2008-04-11

【程式】PHP - CURL

CURL 在寫程式的時候,還蠻常會用到的,抓資料很方便。
貼上一個自己亂寫的Sample。

function getResource($url){
    $ch = curl_init();
    //永遠抓最新
    $header[] = "Cache-Control: no-cache";
    $header[] = "Pragma: no-cache";
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    //等待時間
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
    curl_setopt($ch, CURLOPT_TIMEOUT, 4);
    //Post Data
    $postData="name=".$name."&id=".$id;
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt ($ch, CURLOPT_POSTFIELDS, $postData);
    // 設定referer
    curl_setopt($ch, CURLOPT_REFERER, 'http://www.xuite.net');
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}
$url = 'http://xuite.net';
$res = getResource($url);
//補充說明:2008-12-01
//CURLOPT_URL是要得到內容的地址
//CURLOPT_HEADER是要得到的頭  
//CURLOPT_NOBODY是要得到的內容  
//CURLOPT_PORT是端口
//CURLOPT_RETURNTRANSFER是要把輸出的內容放到buffer中,可以被echo或者賦予某變量
//CURLOPT_POST是標準的提交
//CURLOPT_POSTFIELDS是提交的內容
//CURLOPT_COOKIEJAR是要保存的cookie
//CURLOPT_COOKIEFILE是從文件讀取cookie並提交
//CURLOPT_FOLLOWLOCATION啟用時會將服務器服務器返回的「Location:」放在header中遞歸的返回給服務器
//CURLOPT_MAXREDIRS限定遞歸返回的數量
//CURLOPT_HTTPHEADER設置一個header中傳輸內容的數組
//CURLOPT_REFERER設置header中"Referer:"部分的值
//CURLOPT_USERAGENT在HTTP請求中包含一個」user-agent」頭的字符串。
//CURLOPT_ENCODING設定header中「Accept-Encoding: 」部分的內容,支持的編碼格式為:"identity","deflate","gzip"。如果設置為空字符串,則表示支持所有的編碼格式
//CURLOPT_COOKIE設定HTTP請求中Set-Cookie:部分的內容

下面這段是從Garlic那偷貼過來的,還可以設定帳號跟密碼

(1) php:就是多設定一個  CURLOPT_USERPWD的參數, 內容為 ID:PASSWORD

    $ch = curl_init('http://192.168.1.1/rebootinfo.cgi');
    curl_setopt($ch, CURLOPT_USERPWD, 'garlic:12345678');
    echo curl_exec($ch);
    curl_close($ch); 

 

0 comments:

張貼留言