使用php

时间:2018-05-20 12:48:07

标签: php forms http curl post

我想使用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);
?>

我错过了什么?

1 个答案:

答案 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进行身份验证。