【问题标题】:Get php input values获取php输入值
【发布时间】:2020-09-26 04:54:50
【问题描述】:

我的目标是有一个 WordPress 表单,在发布时,将输入发送到 API 到 ERP。

现在按照我的方式发送时,这些值似乎是空的。

在 CURLOPT_POSTFIELDS 中,如果我输入的不是“$inputname”,而是像“Martin”这样的东西,它可以完美运行。

如何获取我要发送的 4 个字段的值?我试过 $POST['inputname'] 但同样,不起作用。

我根本不是 php 方面的专家,所以任何提示都将不胜感激!谢谢!

<?php       
            if($_POST['Envoyer']) {
      ?>
                <form id="formid2" action="" method="POST">                            
                        <input type="submit" name="Envoyer2" value="Recommencer" />
                </form>
                <?

                $curl = curl_init();

                curl_setopt_array($curl, array(
                CURLOPT_URL => "*******",
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => "",
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 0,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => "POST",
                CURLOPT_POSTFIELDS =>"{\r\n    \"FirstName\": \"$inputname\",\r\n    \"Name\": \"$inputsurname\",\r\n    \"PhoneNo\": \"$inputphone\",\r\n    \"No\": \"$inputcomment\"\r\n}",
                CURLOPT_HTTPHEADER => array(
                    "Authorization: Basic ************",
                    "Content-Type: application/json",
                    "Cookie: RuntimeTenantAffinity=*******"
                ),
                ));
                
                $response = curl_exec($curl);

                curl_close($curl);
                echo $INPUTN;

            } else {
                ?>
                    <form id="formid" action="" method="POST">                            
                        <p>Nom : <input type="text" name="inputname" value="" /></p>
                        <p>Prénom : <input type="text" name="inputsurname" value="" /></p>
                        <p>Téléphone : <input type="text" name="inputphone" value="" /></p>
                        <p>Commentaire : <input type="text" name="inputcomment" value="" /></p>
                        <input type="submit" name="Envoyer" value="Envoyer" />
                    </form>
                <?
            }

            ?>

【问题讨论】:

    标签: php api erp


    【解决方案1】:

    您不应该手动创建json,如果用户输入中有一些特殊字符会产生错误。

    创建一个数组,然后使用json_encode 在您的 curl 中传递数据。同样对于POST 请求,不要使用CUSTOMREQUEST 选项,而是使用CURLOPT_POST

    // User inputs are $inputname, $inputsurname, $inputphone, $inputcomment
    // Create an array 
    $arrData = [
        'FirstName' => $inputname,
        'Name'      => $inputsurname,
        'PhoneNo'   => $inputphone,
        'No'        => $inputcomment
    ];
    
    // Now pass it in curl options array
    [
        ...
        CURLOPT_POST => 1,
        CURLOPT_POSTFIELDS => json_encode($arrData),
    ]
    

    如果 api 支持,您也可以在数组中传递数据。以下是您可以使用的选项。

    CURLOPT_POSTFIELDS

    要在 HTTP“POST”操作中发布的完整数据。要发布文件,请在文件名前加上 @ 并使用完整路径。可以通过使用格式为“;type=mimetype”的文件名来明确指定文件类型。此参数可以作为 urlencoded 字符串(如 'para1=val1&para2=val2&...')或作为字段名称作为键和字段数据作为值的数组传递。如果 value 是一个数组,则 Content-Type 标头将设置为 multipart/form-data。从 PHP 5.2.0 开始,如果文件以 @ 前缀传递给此选项,则 value 必须是数组。从 PHP 5.5.0 开始,不推荐使用 @ 前缀,并且可以使用 CURLFile 发送文件。通过将 CURLOPT_SAFE_UPLOAD 选项设置为 TRUE,可以禁用 @ 前缀以安全传递以 @ 开头的值。

    最后强烈建议你对 curl 使用错误检查,这样你就可以知道出了什么问题。

    if(curl_exec($curl) === false){
        echo 'Curl error: ' . curl_error($curl);
    }
    else{
        echo 'Operation completed without any errors';
    }
    

    【讨论】:

      【解决方案2】:

      感谢 Jitendra Yadav,我成功地发送了我的数据!

      如果有人想知道,我是使用 Jitendra 建议的,一个数组,但不是将变量发布为 $inputname,而是这样做:

      $arrData = [
                              'FirstName' => $_POST['inputname'],
                              'Name'      => $_POST['inputsurname'],
                              'PhoneNo'   => $_POST['inputphone'],
                              'No'        => $_POST['inputcomment']
                          ]; 
      

      现在一切正常。再次感谢!

      【讨论】:

        猜你喜欢
        • 2016-07-05
        • 2016-11-02
        • 1970-01-01
        • 2019-01-16
        • 1970-01-01
        • 2012-11-07
        • 2014-06-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多