Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 对ASP页面的Curl请求_Php_Asp.net_Forms_Post_Curl - Fatal编程技术网

Php 对ASP页面的Curl请求

Php 对ASP页面的Curl请求,php,asp.net,forms,post,curl,Php,Asp.net,Forms,Post,Curl,我正在处理的网页将此页()加载到iframe中。页面上的表单中有一个显示“下一步”的按钮。当用户单击“下一步”时,表单提交。它根据表单上的action属性调用自己。返回的页面是第二步 我已经更改了iframe,以便它加载一个php文件,该文件使用cURL请求与上面相同的页面。我还调整了表单的Action属性,以便它调用对页面()执行cURL请求的php文件。我的问题是,当我通过cURL请求提交表单时,无法显示步骤2。如何获得提交输入的cURL请求,以便出现步骤2 使用HttpFox和Tamper

我正在处理的网页将此页()加载到iframe中。页面上的表单中有一个显示“下一步”的按钮。当用户单击“下一步”时,表单提交。它根据表单上的action属性调用自己。返回的页面是第二步

我已经更改了iframe,以便它加载一个php文件,该文件使用cURL请求与上面相同的页面。我还调整了表单的Action属性,以便它调用对页面()执行cURL请求的php文件。我的问题是,当我通过cURL请求提交表单时,无法显示步骤2。如何获得提交输入的cURL请求,以便出现步骤2

使用HttpFox和Tamper数据,我发现唯一的Post变量是 [名字]=>你的名字 [lastName]=>您的lastName [电子邮件地址]=>someemail@adomain.biz [电话]=>9433238999 [Iam]=>出售房屋 [next_x]=>30 [下一步]=>19 [回发]=>1 [QueryString]=>RP6TQO4W8S84 [GCID]=>直接

下面是我用来请求ASP页面的php代码,其中包含步骤1表单中发布的输入

<?php

function getUrlContent($url, $postedVarsMinus1 = NULL)
{
    //open connection - initialize cURL handler
    $ch = curl_init();

    //set fieds to be posted
    //postedVarsMinus1 is an array of all the post variables that were
    //passed into the php code minus one post variable I added
    if(!is_null($postedVarsMinus1))
    {
        $fields = $postedVarsMinus1;
    }
    else
    {
        $fields = "";
    }

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true); //true

    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    //execute post
    $result = curl_exec($ch);

    $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    $contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
    curl_close($ch);

    return ($httpcode>=200 && $httpcode<300) ? array($result, $contentType) : false;
}
?>

而不知道后端代码对值的期望值(是否需要表单名称和“下一步”按钮的名称)?我已经抛出了一个快速的例子,但它不是100%的工作,因为我猜测的代码背后的ASP检查一些其他细节。因此,我将向您概括介绍您需要做的工作:

1) 通过
cURL
(已完成)将表单拉入

2) 将表单属性修改为服务器上的文件(我选择使用jQuery)


感谢所有发表意见的人。马特·阿尔特佩特(Matt Altepeter)的帖子肯定了我所做的应该是有效的。然而,我错过了cURL或网站认为必要的一步


我使用了一个网站,在这个网站上,我可以构建自己的带有参数的帖子。该站点返回了正确的页面信息。它还以字符串的形式给了我post字段,这让我想到curl或我提交的站点不喜欢我的变量数组。随后,我对数组中的所有值进行URL编码,并将数组转换为形式为key1=value1&key2=value2等的字符串。然后,我将该字符串作为我的post字段变量。工作

我尝试了以下命令:
curl-xpost-H“Content-Type:application/json”-d'{“firstName”:“Matt”}”http://www.homeinsight.com/Widget/default.asp?RP6TQO4W8S84
并获得这些,这是步骤1页面。第2步询问街道地址。您是否有权编辑ASP?如果您这样做,您可以打印出从Curl收到的值。我无法编辑ASP。我使用cURL在同一个域上创建iframe,这样我就可以使用php和JS来编辑HTML的外观。步骤2对cURL使用相同的URL吗?我已经这样做了。然而,我得到的html又是第一步的。是的,我也是这样。我猜ASP希望在
POST
中有更多我/你没有通过的数据。您是否将表单名称/下一步按钮名称与您的帖子数据一起传递?
<script>
    $(function() {
        $('form').attr('action', 'myaction.php');
    });
</script>
$first = $_POST['firstName'];
$last = $_POST['lastName'];
$email = $_POST['emailAddress'];
$phone = $_POST['phone'];
$iam = $_POST['Iam'];
$pb = $_POST['PostBack'];
$qs = $_POST['QueryString'];
$gcid = $_POST['GCID'];

$data = array('firstName' => $first, 'lastName' => $last, 'emailAddress' => $email, 'phone' => $phone, 'Iam' => $iam, 'PostBack' => $pb, 'QueryString' => $qs, 'GCID' => $gcid);

getUrlContent('http://www.homeinsight.com/Widget/default.asp?RP6TQO4W8S84', $data);