【问题标题】:Custom PHP form submission page in WordPressWordPress中的自定义PHP表单提交页面
【发布时间】:2021-02-22 19:28:15
【问题描述】:

我有一个包含所有内容的单页网站。我唯一的其他页面是“感谢提交联系表格”页面。在这个“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 后的图片。

【问题讨论】:

    标签: php wordpress forms permalinks


    【解决方案1】:

    /* 为了解决这个问题,您可以使用以下任何一种方法 */ 方法1) 动作值=get_permalink($page->ID) 方法 2) action value= site_url().'/thankssubmit' // 或根据您的永久链接结构的任何 URL

    /* 试试看是否有效 */

    【讨论】:

    • 表单操作部分中的固定链接将不起作用,因为该操作必须指向包含 PHP 表单的页面。 :(
    猜你喜欢
    • 2018-02-18
    • 2014-02-22
    • 1970-01-01
    • 2016-09-25
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    相关资源
    最近更新 更多