【问题标题】:To auto fill a text area using php curl使用 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 行则什么都不被接受,没有错误消息。服务器上没有指定这样的最大大小。

标签: php curl textarea autofill


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多