提交表单时未收到Curl(php)post变量

提交表单时未收到Curl(php)post变量,php,post,curl,Php,Post,Curl,我正在设计工作申请表。它应将提供的数据插入下面提供的表格中,并自动提交。 在任何其他页面上都没有问题,我可以登录、保存cookies、阅读它们、转到同一站点上的其他链接。 我遇到的问题发生在表单的页面上,具体来说,curl执行并获取页面,但是post数据没有发送(数据以数组的形式发送,也尝试了urlencoded字符串) 它认为表单的结构可能有问题(下面的代码)。 另外,带有表单的站点不是我的,但我将提供询问的标题和post变量 开始吧。 表格: 输出被回送到.js 来自curl的响应头: HT

我正在设计工作申请表。它应将提供的数据插入下面提供的表格中,并自动提交。 在任何其他页面上都没有问题,我可以登录、保存cookies、阅读它们、转到同一站点上的其他链接。 我遇到的问题发生在表单的页面上,具体来说,curl执行并获取页面,但是post数据没有发送(数据以数组的形式发送,也尝试了urlencoded字符串) 它认为表单的结构可能有问题(下面的代码)。 另外,带有表单的站点不是我的,但我将提供询问的标题和post变量

开始吧。 表格:

输出被回送到.js

来自curl的响应头:

HTTP/1.1 200 OK Date: Thu, 24 Jan 2013 08:05:17 GMT Content-Type: text/html;charset=UTF-8 Content-Language: en-US Vary: Accept-Encoding Transfer-Encoding: chunked
Firebug说帖子字段是:

typeSVA
accountCode
param.konos
param.tel
param.tfx
param.eml
param.vrkv
param.lpb
param.idkod
param.ugbrz
param.iatk
param.dkk
param.opkv
attachment
标题 萤火虫

Response Headers
Connection  Keep-Alive
Content-Language    en-US
Content-Length  0
Content-Type    text/plain
Date    Thu, 24 Jan 2013 12:52:46 GMT
Keep-Alive  timeout=15, max=100
Location    https://something.something/ui/something/b2b/faults?type=SVA&guid=40898022-1b33-42ab-a9f2-696cc5f70950
请求头

Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Connection  keep-alive
Cookie  JSESSIONID=DD0148C1D1701FA237704C42DE093687.node1
Host    something
Referer https://something.something/ui/something/something/newFault?type=SVA
User-Agent  Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0
问题:我遇到的问题发生在表单的页面上,具体来说,curl执行并获取页面,但是post数据没有发送,即表单不接受它(数据以数组的形式发送,也以编码字符串的形式发送)有什么想法吗

你还有什么需要问的吗

$url = 'http://foo.com/';

    $paramsarray = array(
            'name' => ' Test',
            'age' =>  24,
            'preferences' => array(1,2,3,4,5,6)
    )

$params = http_build_query($paramsarray);


$ch = curl_init();
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$params);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

    if(curl_exec($ch) === false) {
            echo 0;
    } else {
            echo 1;
    }

    curl_close ($ch);

尝试此操作您可以使用
http\u build\u query()
函数将数组转换为所需的字符串格式。然后使用curl发布到url,制作一个index.php文件,并将以下代码放在那里:

<?php

$url = 'http://localhost/curltest/ind.php';

$paramsarray = array(
    'name' => '',
    'age' =>  24,
);

$params = $query = http_build_query($paramsarray, '', '&');



$ch = curl_init($url);
curl_setopt_array($ch, array(
    CURLOPT_HEADER => false,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => $params,
));
$ress = curl_exec($ch);

echo $ress;

if(curl_exec($ch) === false) {
    echo 0;
} else {
    echo 1;
}
curl_close ($ch);
运行index.php文件,您将获得如下输出:

Array ( [name] => [age] => 24 ) 1

这表明使用curl将空的Post字段提交到
ind.php
页面。

我在上面告诉过你,我尝试了以字符串和数组的形式发送,这两种情况都不行。好主意。我到家后会试试的。所以这不应该是问题所在。你知道我还能试什么吗?当我使用表单时,我会发布标题,以便您可以看到正常表单使用时发生的情况。为了更容易阅读
print\r()
的输出,请使用first print
。你也可以关闭标签,虽然这不是必需的。我放弃了。如果有人发现自己处于类似的情况,我建议放弃尝试用curl。由于ajax的书面形式,我无法使用curl。最近我有一个类似的项目,但这次我用python/mechanize编写了它,它工作起来很有魅力。因此,python是一条出路。
<?php

$url = 'http://localhost/curltest/ind.php';

$paramsarray = array(
    'name' => '',
    'age' =>  24,
);

$params = $query = http_build_query($paramsarray, '', '&');



$ch = curl_init($url);
curl_setopt_array($ch, array(
    CURLOPT_HEADER => false,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => $params,
));
$ress = curl_exec($ch);

echo $ress;

if(curl_exec($ch) === false) {
    echo 0;
} else {
    echo 1;
}
curl_close ($ch);
<?php
print_r($_POST);
?>
Array ( [name] => [age] => 24 ) 1