我想使用php执行特定的HTTP帖子(是的,这与其他线程不同)。 因此,名为 http://127.0.0.1:8060/PFOOptions/?PFOID=0x000000950C420940 的网址有一个表单帖子,我想用php执行。 它看起来像这样:
<form action="." method="post" enctype="multipart/form-data">
,提交按钮如下所示。
<input type="submit" name="Okay" value="Okay">
表单中包含各种输入,例如 RemoteAdress 和 LocalPort 。我尝试使用此代码来执行帖子,但代码如何知道我想要执行哪种特定表单?并且提交的名称=“好的”。我在哪里提供这些信息?
<?php
$url = 'http://127.0.0.1:8060/PFOOptions/?PFOID=0x0000004C98FFBDD0';
$data = array('LocalPort' => '2743', 'RemoteAdress' => 'halo.com');
// use key 'http' even if you send the request to https://...
$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data)
)
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result === FALSE) { /* Handle error */ }
var_dump($result);
?>
我错过了什么?
答案 0 :(得分:0)
代码如何知道我想要执行哪种特定形式?
一般情况下:它不能。
HTML表单与该表单的用户输入相结合,告诉浏览器如何构造HTTP请求。
当您编写PHP以发出HTTP请求时,您需要编写PHP来代替表单和用户输入。
并且提交的名称=“好的”。我在哪里提供这些信息?
提交按钮(如果用于提交表单)将其名称和值添加到提交的表单数据中,就像任何其他表单控件一样。
所以你把它放在表格数据的其余部分的同一个地方。
即。您指定给$data
我错过了什么?
您正在构建application/x-www-form-urlencoded
格式的数据。
您还指定了Content-Type应为application/x-www-form-urlencoded
。
这些匹配很好,但是,表单显示enctype="multipart/form-data"
,因此您提交的网址可能不支持application/x-www-form-urlencoded
输入,您需要{{3 }}
我们无法根据您提供的信息确定其他事实,例如期望使用Cookie进行身份验证。