Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.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 需要HTTP post中正确值的帮助(我想)_Php_Http Post - Fatal编程技术网

Php 需要HTTP post中正确值的帮助(我想)

Php 需要HTTP post中正确值的帮助(我想),php,http-post,Php,Http Post,所以我以前从未使用过PHP或http发布或其他任何东西,所以如果我问了一些愚蠢的问题,请原谅 这里有一个网站,我可以更准确地解释我需要什么 因此,我想写一些东西,将得到最终的页面信息,就好像我按下了go按钮,旁边写着consumer fair违例。在做了大量的谷歌搜索之后,我想我应该做HTTP发布,所以我一直在胡乱使用PHP和CURl。这就是我提出的代码,尽管我不确定我应该发布什么值 <?php $ch = curl_init(); curl_setopt($ch, CURLOPT_UR

所以我以前从未使用过PHP或http发布或其他任何东西,所以如果我问了一些愚蠢的问题,请原谅

这里有一个网站,我可以更准确地解释我需要什么

因此,我想写一些东西,将得到最终的页面信息,就好像我按下了go按钮,旁边写着consumer fair违例。在做了大量的谷歌搜索之后,我想我应该做HTTP发布,所以我一直在胡乱使用PHP和CURl。这就是我提出的代码,尽管我不确定我应该发布什么值

<?php

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://nycserv.nyc.gov/NYCServWeb/NYCSERVMain");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);

$data = array(
    'dcadropdownmenu.name' => 'javascript:consumerAffairsViolationsQuerySetup("GET_CONSUMER_AFFAIRS_VIOLATION_SEARCH_QUERY_SETUP")');

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);

print $info;
print $output;
?>
我很确定我不应该设置dvaddropdowmenu.name,但我不知道我应该发布什么。任何帮助都会很好

更新
所以我终于成功了。我现在遇到的问题是如何在返回的页面上再次使用HTTP post。我的意思是,我让它从页面返回HTML,就像我点击Go按钮一样。现在我需要点击这个返回页面上的搜索按钮。我试着改变post变量并再次执行,但没有成功。有什么帮助吗?

需要对JavaScript进行一些挖掘才能找到它,但下面是实际提交的表单:

form name=​"NycservProtocolForm" method=​"POST" action=​"NYCSERVMain">​
    <center>​…​</center>​
    <!--    N Y C S E R V   P R O T O C O L    -->
    <input type=​"HIDDEN" name=​"ChannelType" value=​"ct/​Browser">​
    <input type=​"HIDDEN" name=​"RequestType" value=​"rt/​Business">​
    <input type=​"HIDDEN" name=​"SubSystemType" value=​"st/​Payments">​
    <input type=​"HIDDEN" name=​"AgencyType" value=​"at/​PVO">​
    <input type=​"HIDDEN" name=​"ServiceName" value=​"NONE">​
    <input type=​"HIDDEN" name=​"MethodName" value=​"NONE">​
    <input type=​"HIDDEN" name=​"PageID" value=​"NYCSERVHome">​
    <input type=​"HIDDEN" name=​"ParamCount" value=​"0">​
    <input type=​"HIDDEN" name=​"NycservRequest" value=​"EMPTY">​
    <input type=​"HIDDEN" name=​"SearchType" value=​"EMPTY">​
    <input type=​"HIDDEN" name=​"LinkType" value=​"EMPTY">​
</form>

根据您对表单的熟悉程度,您可以决定发送多少个参数。但这些是您在发送POST请求时要指定的变量。

查看Firefox的Tamper Data扩展,它将让您准确地看到哪些变量被发布到哪个URL。你说得对,我看到很多javascript:strings被发布了。所以这不是很简单的事情,比如只有一个变量?我是否必须以不同的方式输入变量,因为输入类型是隐藏的?@Jack一点也不。PHP不关心它是什么表单类型,只关心名称和值。知道那是什么意思吗?啊!所以我对代码做了一点修改,它就工作了。问题是,我没有得到正确的数据。这将出现在HTML的某个地方,您的会话已超时或过期。请点击主页的链接。如何修复此问题?@Jack当页面首次加载时,它会尝试设置会话cookie。您需要做的是第一次使用,并在返回的数组中查找会话id。然后发送您的curlpost请求,并包含该会话id。