2009-11-09 55 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