如何在 wordpress 中通过 cURL PHP 提交自定义 POST 表单
How to submit custom POST form via cURL PHP in wordpress
我正在制作主题 wordpress 在本地主机中使用 childtheme。我在 footer.php
:
中有一个基本形式 html
<form method="post">
<input name="FNAME" type="text">
<input name="LNAME" type="text">
<input name="EMAIL" type="email">
<button type="submit">Subscribe</button>
</form>
现在,我想通过 cURL php 将表单提交到 api url。我知道像这样设置 cURL 的代码:
$data = $_POST;
$curl = curl_init();
$options =array(
CURLOPT_RETURNTRANSFER =>true,
CURLOPT_URL => 'link_to_url',
CURLOPT_POST => true,
CURLOPT_CONNECTTIMEOUT => 30,
CURLOPT_USERAGENT => "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)",
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_POSTFIELDS => http_build_query($data)
);
curl_setopt_array($curl, $options);
$result = curl_exec($curl);
curl_close($curl);
我想在提交表单时,POST 数据将通过此 cURL 发送,但我不知道应该将此代码放在哪里以及如何处理它。我想它可能放在 function.php
中的一个函数中,但我不知道怎么写。请帮助我!
如果你想在同一个文件中执行上述代码,可以这样做:
<?php
// any other php code above
if(isset($_POST["infoForm"])) {
$curl = curl_init();
$data = array(
'post_request_name_for_fName' => $_POST["FNAME"],
'post_request_name_for_lName' => $_POST["FNAME"],
'post_request_name_for_email' => $_POST["EMAIL"]
);
$options =array(
CURLOPT_RETURNTRANSFER =>true,
CURLOPT_URL => 'link_to_url',
CURLOPT_POST => true,
CURLOPT_CONNECTTIMEOUT => 30,
CURLOPT_USERAGENT => "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)",
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_POSTFIELDS => http_build_query($data)
);
curl_setopt_array($curl, $options);
$result = curl_exec($curl);
curl_close($curl);
}
// any other php code below
?>
并将 HTML 设置为:
<form method="post">
<input name="FNAME" type="text">
<input name="LNAME" type="text">
<input name="EMAIL" type="email">
<button type="submit" name="infoForm">Subscribe</button>
</form>
下面是它背后的解释。您将提交按钮的 name
设置为 infoForm
(或您想要的任何其他内容),以便 PHP 可以知道哪个表单是 posted 以及何时编辑。然后您使用 if(isset($_POST["infoForm"]))
检查表单是否被 posted,然后您执行下面的代码 post 它。
$_POST["FNAME"]
和其他变体检查在每个输入中找到的数据并将其设置为 $data
数组的值。然后,您可以将 post_request_name_for_fName
的所有值更改为您的 post 请求需要的任何值(即;如果您 post 请求需要 'name' 并且'email' 参数,根据需要更改上面的值即可)。
如果您还想转换到不同的页面,您可以创建一个新文件(即;post.php)并在没有 if(isset) 的情况下添加代码,然后设置您的 html 像这样:
<form method="post" action="post.php">
<input name="FNAME" type="text">
<input name="LNAME" type="text">
<input name="EMAIL" type="email">
<button type="submit" name="infoForm">Subscribe</button>
</form>
我正在制作主题 wordpress 在本地主机中使用 childtheme。我在 footer.php
:
<form method="post">
<input name="FNAME" type="text">
<input name="LNAME" type="text">
<input name="EMAIL" type="email">
<button type="submit">Subscribe</button>
</form>
现在,我想通过 cURL php 将表单提交到 api url。我知道像这样设置 cURL 的代码:
$data = $_POST;
$curl = curl_init();
$options =array(
CURLOPT_RETURNTRANSFER =>true,
CURLOPT_URL => 'link_to_url',
CURLOPT_POST => true,
CURLOPT_CONNECTTIMEOUT => 30,
CURLOPT_USERAGENT => "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)",
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_POSTFIELDS => http_build_query($data)
);
curl_setopt_array($curl, $options);
$result = curl_exec($curl);
curl_close($curl);
我想在提交表单时,POST 数据将通过此 cURL 发送,但我不知道应该将此代码放在哪里以及如何处理它。我想它可能放在 function.php
中的一个函数中,但我不知道怎么写。请帮助我!
如果你想在同一个文件中执行上述代码,可以这样做:
<?php
// any other php code above
if(isset($_POST["infoForm"])) {
$curl = curl_init();
$data = array(
'post_request_name_for_fName' => $_POST["FNAME"],
'post_request_name_for_lName' => $_POST["FNAME"],
'post_request_name_for_email' => $_POST["EMAIL"]
);
$options =array(
CURLOPT_RETURNTRANSFER =>true,
CURLOPT_URL => 'link_to_url',
CURLOPT_POST => true,
CURLOPT_CONNECTTIMEOUT => 30,
CURLOPT_USERAGENT => "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)",
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_POSTFIELDS => http_build_query($data)
);
curl_setopt_array($curl, $options);
$result = curl_exec($curl);
curl_close($curl);
}
// any other php code below
?>
并将 HTML 设置为:
<form method="post">
<input name="FNAME" type="text">
<input name="LNAME" type="text">
<input name="EMAIL" type="email">
<button type="submit" name="infoForm">Subscribe</button>
</form>
下面是它背后的解释。您将提交按钮的 name
设置为 infoForm
(或您想要的任何其他内容),以便 PHP 可以知道哪个表单是 posted 以及何时编辑。然后您使用 if(isset($_POST["infoForm"]))
检查表单是否被 posted,然后您执行下面的代码 post 它。
$_POST["FNAME"]
和其他变体检查在每个输入中找到的数据并将其设置为 $data
数组的值。然后,您可以将 post_request_name_for_fName
的所有值更改为您的 post 请求需要的任何值(即;如果您 post 请求需要 'name' 并且'email' 参数,根据需要更改上面的值即可)。
如果您还想转换到不同的页面,您可以创建一个新文件(即;post.php)并在没有 if(isset) 的情况下添加代码,然后设置您的 html 像这样:
<form method="post" action="post.php">
<input name="FNAME" type="text">
<input name="LNAME" type="text">
<input name="EMAIL" type="email">
<button type="submit" name="infoForm">Subscribe</button>
</form>