如何解决WordPress 中的自定义 PHP 表单提交页面
我有一个包含所有内容的单页网站。我唯一的其他页面是“感谢您提交联系表格”页面。在这个“thankssubmit.php”页面中,我有我的 PHP 表单提交代码。
我是 wordpress 的新手,所以我的做法可能完全错误,但我已经使用 /*Template Name: Thanks Submit*/
为这个“thankssubmit.php”页面创建了一个自定义页面模板。
然后我将该模板应用于 WP 中的一个全新页面。我无法将 .php 添加到 slug,这可能是唯一的问题,但我看不到解决方法。一个奇怪的问题是,当我提交表单时,我转到了正确的 URL,但出现“找不到页面”错误。如果我复制并粘贴这个完全相同的 URL,我将转到正确的页面...
以下是所有代码。
我已经看过了,我看不出这个问题是重复的,但如果是这样,我们将不胜感激!
表格
<form method="post" action="thankssubmit.php">
<h3>Drop Us a Message</h3>
<div class="row">
<div class="col-sm">
<div class="form-group">
<input id="nameInput" type="text" name="name" onkeyup="manage(this)" class="form-control" placeholder="Your Name *" />
</div>
<div class="form-group">
<input id="emailInput" type="text" name="email" onkeyup="manage(this)" class="form-control" placeholder="Your Email *" />
</div>
<div class="form-group">
<input type="text" name="phone" class="form-control" placeholder="Your Phone Number" />
</div>
<div class="form-group">
<input id="weddingDatePicker" type="date" name="date" class="form-control" placeholder="Your Wedding Date -" />
</div>
<div class="form-group">
<input type="text" name="hear" class="form-control" placeholder="How did you hear about us?" />
</div>
</div>
<div class="col">
<div class="form-group">
<textarea id="messageInput" name="message" onkeyup="manage(this)" class="form-control" placeholder="Your Message *" style="width: 100%; height: 254px;"></textarea>
</div>
<div class="form-group">
<input id="contactSubmitBtn" type="submit" disabled name="btnSubmit" class="btn" value="Send Message" />
</div>
</div>
</div>
</form>
thankssubmit.php 页面
<?php get_header(); ?>
<!-- THANKS OR SUCCESS MESSAGE AFTER THE EMAIL HAS BEEN SENT -->
<section id="thanksMsgPG">
<h1 class="thanksmsg">Thanks for getting in touch.</h1>
<h3 class="thanksmsg">We'll get back to you ASAP!</h3>
<a href="/"><button class="btn ">Back</button></a>
</section>
<?php get_footer(); ?>
<?php
/*
Template Name: Thanks Submit
*/
if (isset($_POST['btnSubmit'])) {
// EMAIL AND SUBJECT OF EMAIL BEING SENT
$email_to = "hello@everafterfilmsni.com";
$subject = "Contact Submission Form";
//ERROR MESSAGES IF DIED FUCNTION IS CALLED (SEMI-REDUNDANT BECAUSE SEND BUTTON WONT BE ENABLED UNTIL INPUT FIELDS ARE FILLED CORRECTLY ANYWAY)
function died($error)
{
echo "We are very sorry,but there were error(s) found with the form you submitted. ";
echo "These errors appear below.<br /><br />";
echo $error . "<br /><br />";
echo "Please go back and fix these errors.<br /><br />";
die();
}
// IF NOTHING ENTERED THEN THROW ERROR MESSAGE
if (!isset($_POST['name']) ||
!isset($_POST['email']) ||
!isset($_POST['message'])) {
died('We are sorry,but there appears to be a problem with the form you submitted.');
}
//GETTING THE NAME EMAIL PHONE MESSAGE FROM THE FORM AND PUTTING IT INTO VARIABLES
$full_name = $_POST['name']; // required
$email_from = $_POST['email']; // required
$phone = $_POST['phone'];
$date = $_POST['date'];
$hear = $_POST['hear']; // required
$message = $_POST['message']; // required
$error_message = "";
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
//CHECKING TO MAKE SURE VALID EMAIL IS ENTERED
if (!preg_match($email_exp,$email_from)) {
$error_message .= 'The e-mail you entered does not appear to be valid.<br />';
}
//CHECKING TO MAKE SURE VALID NAME IS ENTERED
$string_exp = "/^[A-Za-z .'-]+$/";
if (!preg_match($string_exp,$full_name)) {
$error_message .= 'The name you entered does not appear to be valid.<br />';
}
//CHECKING TO MAKE SURE MESSAGE IS MORE THAN 2 CHARACTERS
if (strlen($message) < 2) {
$error_message .= 'The message you entered does not appear to be valid.<br />';
}
if (strlen($error_message) > 0) {
died($error_message);
}
$email_message = "Form details below.\n\n";
//MAKING SURE THERE ARE NO HEADER INJECTIONS
function clean_string($string)
{
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
//THE FORMAT OF THE EMAIL BEING SENT. CLEAN STRING CLEANING ANY WHITE SPACE
$email_message .= "Name: " . clean_string($full_name) . "\n";
$email_message .= "Email: " . clean_string($email_from) . "\n";
$email_message .= "Phone: " . clean_string($phone) . "\n";
$email_message .= "Wedding Date: " . clean_string($date) . "\n";
$email_message .= "I heard about you via: " . clean_string($hear) . "\n";
$email_message .= "Message: \r\n" . clean_string($message) . "\n";
$email_from = $full_name . '<' . $email_from . '>';
// CREATING EMAIL HEADER FOR GMAIL TO RECOGNISE
$headers = 'From: ' . $email_from . "\r\n" .
'Reply-To: ' . $email_from . "\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to,$subject,$email_message,$headers);
// echo $email_message;
?>
<?php
}
?>
我添加了两张图片 - 下面的第一张图片显示了我们提交表单后的 URL 错误,第二张显示了我们重新加载页面 URL 后的错误。
解决方法
/* 为了解决这个问题,您可以使用以下任何一种方法 */ 方法 1) action value=get_permalink($page->ID) 方法 2) action value= site_url().'/thankssubmit' // 或任何 URL,根据您的固定链接结构
/* 试试看是否有效 */
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。