繁体   English   中英

如何提交从URL检索表单并使用PHP提交的表单?

[英]How to submit retrieve a form from URL and submit it using PHP?

我发现了一项任务,可以提高自己的技能。 任务是从给定的URL获取表单并填写表单。 该表格将有3个输入,分别是名称,电子邮件,一个计数和一个正方形,以及“ x”和“ ”的组合。 填写所有字段,在名为count的输入框中,我必须填写“的数量,然后必须提交表单。 我只需要使用PHP。

表单应提交到我获取表单的相同URL。 我尝试使用cURL,但是它再次返回了表单,而不是预期的输出。

if(!empty($_POST)){
    echo "<pre>";
    print_r($_POST);
    echo "</pre>";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, true);
    $data = $_POST;
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    $out = curl_exec($ch);
    $inf = curl_getinfo($ch);
    curl_close($ch);

    echo "<pre>";
    print_r($out);
    print_r($inf);
    echo "</pre>";
    exit;
  }

提交表单后,我希望收到“感谢提交”。 文本。 相反,我得到的形式与输出相同。

也许问题是您正在以数组形式而不是URL编码发送帖子字段值,请使用http_build_query或json_encode进行检查。

检查以下代码。

if(!empty($_POST)){
        echo "<pre>";
        print_r($_POST);
        echo "</pre>";
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, true);
        $data = $_POST;

        /*** you are direct sending the array value 
        use http_build_query
         or
         $data_string = json_encode($data);
        ***/
        $data_string = http_build_query($data);

        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string );
        $out = curl_exec($ch);
        $inf = curl_getinfo($ch);
        curl_close($ch);

        echo "<pre>";
        print_r($out);
        print_r($inf);
        echo "</pre>";
        exit;
      }

PHP无法对表单做任何事情。 在这种情况下,您应该获取html表单( curl是一个选项。然后解析表单以获取表单方法(get / post),操作(url)和所有输入名称。

为此,您可以使用xpath之类的东西

在此处,您可以通过根据上述给定信息制作数据来提交另一个请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM