微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获取PHP输入值

如何解决获取PHP输入值

我的目标是拥有一个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>
                <?
            }

            ?>

解决方法

您不应该手动创建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,可以禁用@前缀以安全地传递以@开头的值。

最后强烈建议您对卷毛使用错误检查,以便您知道出了什么问题。

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。