【问题标题】:Filling out and submitting html forms with php without user input用php填写和提交html表单,无需用户输入
【发布时间】:2011-07-31 03:25:53
【问题描述】:

我在一个名为“foobar.html”的文件中有以下表格:

<!-- other stuff -->

<form method="post" action="foo.php?cat=1">
  <input type="text" name="bar" />
  <input type="submit" value="foobar" name="foobar" />
</form>

<!-- other stuff -->

我使用 fopen 在 php 脚本中打开此文件,如何在没有用户输入的情况下填写并提交此表单?谢谢

【问题讨论】:

    标签: php forms input submit


    【解决方案1】:

    使用 HTML 解析器解析出 action 属性,并使用 curl 将 perform a POST 指向相应的目标 URL。

    【讨论】:

      【解决方案2】:

      将整个火焰读入一个变量。与其使用 fopen,不如考虑使用 file_get_contents,它更简洁一些。

      然后,您需要将该字符串解析为 HTML。您可以为此使用 PHP 的 DOMDocument。通过遍历 DOM 树到表单标签并读出这些属性来获取表单的动作和方法。接下来获取表单标签中任何输入的名称。使用这些名称生成带有键=值对的查询字符串。如果表单的方法是 GET,则将该查询字符串附加到表单操作中,否则将其保存在另一个变量中。

      最后,使用CURL“提交”表单。也就是说,使用表单操作作为 CURL 请求的 URL。如果表单方法是 GET,您应该已经将数据附加到 URL,如果方法是 POST,您需要将 CURL 请求的数据设置为您从表单名称生成的数据查询字符串。

      如果您的问题延伸到如何知道将哪些数据填写到哪些表单字段中,那几乎是不可能解决的。当然,您可以查找一些输入名称并猜测所需的数据,但通用解决方案是不可能解决的问题。

      【讨论】:

        【解决方案3】:

        您是否试图让 用户 在浏览器上提交表单,而无需用户交互?如果是这种情况,您将需要使用 javascript,例如:

        <body onLoad="document.getElementById('autoSubmit').submit();">
            <form id="autoSubmit">
            (insert form here) 
            </form>
        </body>
        

        这将自动提交表单。一些注意事项:并非每个人都启用了 JavaScript,因此您可能希望将输入更改为 type="hidden",并添加一个漂亮的大提交按钮,上面写着 Click Here

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多