PHP跨項目傳遞數據 curl_init()使用說明

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:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章