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

CURL之用POST方法發送數據

編輯:關於PHP編程

對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變量一樣傳過去,不過記得在前面加上@符號。執行這段腳本應該會得到如下輸出:

 

 

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