使用 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&param2=val2

【讨论】:

以上是关于使用 php curl 自动填充文本区域的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 变量自动填充 Textarea

如何阻止 Chrome 自动完成文本区域?

WTForms-如何预填充文本区域字段?

用单击的按钮填充文本区域

MVC创建表单加载时如何用一些数据填充文本区域?

点击按钮后在两个文本区域中添加新行并用文本填充它们