對CURL還不了解的同學請移步:http://www.BkJia.com/kf/201208/147091.html
當發起GET請求時,數據可以通過“查詢字串”(query string)傳遞給一個URL。例如,在google中搜索時,搜索關鍵即為URL的查詢字串的一部分:
http://www.google.com/search?q=nettuts
這種情況下你可能並不需要cURL來模擬。把這個URL丟給“file_get_contents()”就能得到相同結果。
不過有一些HTML表單是用POST方法提交的。這種表單提交時,數據是通過 HTTP請求體(request body) 發送,而不是查詢字串。例如,當使用CodeIgniter論壇的表單,無論你輸入什麼關鍵字,總是被POST到如下頁面:
http://codeigniter.com/forums/do_search/
你可以用PHP腳本來模擬這種URL請求。首先,新建一個可以接受並顯示POST數據的文件,我們給它命名為post_output.php:
print_r($_POST);
接下來,寫一段PHP腳本來執行cURL請求:
$url = "http://localhost/post_output.php";
$post_data = array (
"foo" => "bar",
"query" => "Nettuts",
"action" => "Submit"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 我們在POST數據哦!
curl_setopt($ch, CURLOPT_POST, 1);
// 把post的變量加上
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
執行代碼後應該會得到以下結果:
這段腳本發送一個POST請求給 post_output.php ,這個頁面 $_POST 變量並返回,我們利用cURL捕捉了這個輸出。
文件上傳
上傳文件和前面的POST十分相似。因為所有的文件上傳表單都是通過POST方法提交的。
首先新建一個接收文件的頁面,命名為 upload_output.php:
print_r($_FILES);
以下是真正執行文件上傳任務的腳本:
$url = "http://localhost/upload_output.php";
$post_data = array (
"foo" => "bar",
// 要上傳的本地文件地址
"upload" => "@C:/wamp/www/test.zip"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
如果你需要上傳一個文件,只需要把文件路徑像一個post變量一樣傳過去,不過記得在前面加上@符號。執行這段腳本應該會得到如下輸出: