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 支持,您也可以在数组中传递数据。以下是您可以使用的选项。
在 HTTP“POST”操作中发布的完整数据。要发布文件,请在文件名前加上 @ 并使用完整路径。文件类型可以通过使用格式为“;type=mimetype”的文件名来明确指定。此参数可以作为 urlencoded 字符串(如 'para1=val1¶2=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';
}
推荐阅读
- javascript - GoogleMaps 上的测地线多边形
- python - 何时在函数内部创建嵌套函数,何时从外部调用它?
- reactjs - 如何在拖放操作期间在当前插入点显示占位符元素?
- rust - 什么是有效字符以及如何在 clap.rs 参数中转义?
- python - 在python中合并数据框时,如果框架中有列表元素我该怎么办?(不可散列的类型:'list')
- postgresql - 在 PostgreSQL 11.0 的表中创建外键时出错
- racket - 球拍标量向量乘法
- php - php基于时间的背景
- batch-file - 批处理文件以将文件复制到具有日期名称的新创建的文件夹
- sql - 在 Sybase 中有效处理通配符