使用 php curl 自动填充文本区域
Posted
技术标签:
【中文标题】使用 php curl 自动填充文本区域【英文标题】:To auto fill a text area using php curl 【发布时间】:2009-11-09 12:54:25 【问题描述】:我们正在尝试自动填充具有文本区域的表单。
<textarea name="myarea"></textarea>
我们可以使用 curl 来做到这一点,但它只接受输入文本的一部分。如果内容太大,则它不接受任何内容。文本区域的字符数没有限制。
$area['myarea']=>"a large html code.................."
curl_setopt($ch,CURL_POSTFIELDS,$area);
curl_execute();
请提出解决方案。
【问题讨论】:
到底是什么问题?你的情况有多大?你能发布具体的例子吗?如果发布大数据会发生什么?有错误信息吗? 多大才算太大?如果您在浏览器中使用网页,您可以发布相同数量的数据吗?可能是您正在访问服务器的 post_max_size 问题是如果输入文本有 2-3 行那么它工作正常,如果有 4-5 行则什么都不被接受,没有错误消息。服务器上没有指定这样的最大大小。 【参考方案1】:你确定你正确地转义了参数吗?只需为此目的使用 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
正如预期的那样,请求如下所示: 发布/HTTP/1.1 主机:本地主机:3333 接受:/ 内容长度:23 内容类型:application/x-www-form-urlencoded
param1=val1¶m2=val2
【讨论】:
以上是关于使用 php curl 自动填充文本区域的主要内容,如果未能解决你的问题,请参考以下文章