PHP的curl擴展庫:
1.作用:
可以獲取其他站點的內容。跨站點傳遞數據(在webservice很有用)(剛剛接觸只是個人觀點!)
2.使用方法:
(1)curl_init()函數的作用初始化一個curl會話,curl_init()函數唯一的一個參數是可選的,表示一個url地址。
(2)curl_exec()函數的作用是執行一個curl會話,唯一的參數是curl_init()函數返回的句柄。
(3)curl_close()函數的作用是關閉一個curl會話,唯一的參數是curl_init()函數返回的句柄。
(4)curl_setopt ()爲一個curl設置會話參數
(5)curl_setopt_array () 以數組的形式爲一個curl設置會話參數
eg:test.1 php
test2.php
說明:如上代碼test2.php可以通過$_POST獲取test1.php post 過來的數據,而運行test1.php 頁面又可獲取到test2.php 輸出的數據。
如果test1.php和test2.php不在同一個域名下,它依然可以。所以對於跨域是特別有用的。
curl設置會話參數:(以下幾個參數開源於:http://www.jb51.net/article/25193.htm)
CURLOPT_RETURNTRANSFER 設爲1 希望獲得內容但不輸出
CURLOPT_FOLLOWLOCATION :當你把這個參數設置爲true時,curl會根據任何重定向命令更深層次的獲取轉向路徑,舉個例子:當你嘗試獲取一個PHP的頁面,然後這個PHP的頁面中有一段跳轉代碼 ,curl將從http://new_url獲取內容,而不是返回跳轉代碼。(和這個參數有關的兩個選項是CURLOPT_MAXREDIRS和CURLOPT_AUTOREFERER . )
CURLOPT_MAXREDIRS選項允許你定義跳轉請求的最大次數,超過了這個次數將不再獲取其內容。
CURLOPT_AUTOREFERER 設置爲true時,curl會自動添加Referer header在每一個跳轉鏈接,可能它不是很重要,但是在一定的案例中卻非常的有用。
CURLOPT_POST,這是一個非常有用的功能,因爲它可以讓您這樣做POST請求,而不是GET請求,這實際上意味着你可以提交 其他形式的頁面,無須其實在表單中填入。(上面的例子已經說明)
CURLOPT_CONNECTTIMEOUT
通常用來設置curl嘗試請求鏈接的時間,這是一個非常重要的選項,如果你把這段時間設置的太短了,可能會導致curl請求失敗。 但是如果你把它設置的時間太長了,可能PHP腳本將死掉。
CURLOPT_TIMEOUT,這是用來設置curl允許執行的時間需求。如果您設置這一個很小的值,它可能會導下載的網頁上是不完整的,因爲他們需要一段時間才能下載。
CURLOPT_USERAGENT,它允許你自定義請求是的客戶端名稱,比如webspilder或是IE6.0.示例代碼如下:
函數curl_getinfo()可以使得我們獲取接受頁面各種信息
curl_setopt($ch, CURLOPT_USERAGENT, ‘My custom web spider/0.1′);
$ch
= curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, “http://www.google.com/does/not/exist”);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// grab URL
$output = curl_exec($ch);
// Get response code
$response_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// Not found?
if ($response_code == ‘404′) {
echo ‘Page doesn\'t exist';
} else {
echo $output;
}
通過curl_setopt_array () 以數組的形式爲一個curl設置會話參數:
eg: