你確定你正確地轉義了參數嗎?只需使用urlencode()來達到此目的。這裏是一個例子:
<?php
$url = 'http://localhost/';
$fields = array (
'param1' => 'val1',
'param2' => 'val2'
);
$qry = '';
foreach ($fields as $key => $value) {
$qry .= $key . '=' . urlencode($value) . '&';
}
$qry = rtrim($qry, '&');
// Alternatively, you can also use $qry = http_build_query($fields, '');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $qry);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
var_dump($result);
?>
如果你想驗證請求發送正常,我會建議netcat。只需將URL設置爲http://localhost:3333/,然後使用執行netcat的: $ NC -l -p 3333
正如預期的那樣,要求是這樣的: POST/HTTP/1.1 主機:本地主機:3333 接受:/ 的Content-Length:23 內容類型:應用程序/ x-WWW窗體-urlencoded
param1=val1¶m2=val2
到底是什麼問題?你的情況有多大?你能發表具體的例子嗎?如果發佈大量數據會發生什麼?有沒有錯誤信息? – 2009-11-09 12:58:45
有多大?如果您在瀏覽器中使用網頁,您可以發佈相同數量的數據嗎?這可能是你正在碰到服務器的post_max_size – NeilCrosby 2009-11-09 13:00:49
問題是,如果有2-3行的輸入文本,那麼它工作正常,如果有4-5行,那麼什麼都不被接受,沒有錯誤消息。服務器上沒有這種最大尺寸。 – Aditya 2009-11-09 13:22:32