2009-11-09 81 views
0

我們試圖自動填充具有文本區域的表單。使用php curl自動填充文本區域

<textarea name="myarea"></textarea> 

我們可以使用curl來實現,但它只接受輸入文本的一部分。如果內容太大,則不接受任何內容。關於文本區域的字符數量沒有限制。

$area['myarea']=>"a large html code.................." 
curl_setopt($ch,CURL_POSTFIELDS,$area); 
curl_execute(); 

請建議解決方案。

+0

到底是什麼問題?你的情況有多大?你能發表具體的例子嗎?如果發佈大量數據會發生什麼?有沒有錯誤信息? – 2009-11-09 12:58:45

+0

有多大?如果您在瀏覽器中使用網頁,您可以發佈相同數量的數據嗎?這可能是你正在碰到服務器的post_max_size – NeilCrosby 2009-11-09 13:00:49

+0

問題是,如果有2-3行的輸入文本,那麼它工作正常,如果有4-5行,那麼什麼都不被接受,沒有錯誤消息。服務器上沒有這種最大尺寸。 – Aditya 2009-11-09 13:22:32

回答

0

你確定你正確地轉義了參數嗎?只需使用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&param2=val2