【问题标题】:PHP contact form success send email but fail to redirect to thank you pagePHP联系表成功发送电子邮件但无法重定向到感谢页面
【发布时间】:2016-07-27 04:25:06
【问题描述】:

我是 PHP 初学者。

这是一个“联系我们”表单,用户可以在其中发送他们的问题。 目前,它已成功将提交的问题直接发送到我们的电子邮件。但是,提交后它未能重定向到感谢页面。 我真诚地希望有人可以帮助我。我迷路了。代码如下。提前谢谢你。

<?php

// Define some constants
define( "RECIPIENT_NAME", "Choice Baby Enquiry" );
define( "RECIPIENT_EMAIL", "enquiry@choicebaby.com.my" );

// Read the form values
$success = false;
$senderName = isset( $_POST['name'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['name'] ) : "";
$senderEmail = isset( $_POST['email'] ) ? preg_replace( "/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['email'] ) : "";
$subject = isset( $_POST['subject'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['subject'] ) : "Enquiry";
$message = isset( $_POST['message'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['message'] ) : "";

// If all values exist, send the email
if ( $senderName && $senderEmail && $message ) {
  $recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . ">";
  $headers = "From: " . $senderName . " <" . $senderEmail . ">";
  $success = mail( $recipient, $subject, $message, $headers );
}

if ( mail( $recipient, $subject, $message, $headers )) {
    header ("Location: thanks.html");
    exit ();
}

?>

----编辑----

这是 HTML:

<section class="contact_us_container">
            <div class="container">
                <div class="row">
                    <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12" style="text-align:center;"> <!-- section title -->
                        <h2>Get In Touch With Us</h2>
                        <p>Type your question here and we will get back to you as soon as possible.</p>
                    </div> <!-- End section title -->
                    <div class="col-lg-8 col-md-8 col-sm-12 col-xs-12 form_holder"> <!-- form holder -->
                        <form action="includes/sendemail.php" class="contact-form">
                            <input class="form-control name" type="text" name="name" placeholder="Your Name">
                            <input class="form-control email" type="email" name="email" placeholder="Your Email">
                            <input class="form-control" type="text" name="subject" placeholder="Subject">
                            <textarea name="message" placeholder="Your Message"></textarea>
                            <button type="submit" class="submit">submit now<i class="fa fa-arrow-circle-right"></i></button>
                        </form> <!-- End form holder -->
                    </div>
                    <div class="col-lg-4 col-md-4 col-sm-12 col-xs-12 pull-right address">
                        <address>
                            <div class="icon_holder float_left"><span class="icon icon-Pointer"></span></div>
                            <div class="address_holder float_left">M2-19-03,<br>8trium Tower, Jalan Cempaka SD 12/5,<br>Bandar Sri Damansara,52000 KL</div>
                        </address>
                        <address class="clear_fix">
                            <div class="icon_holder float_left"><span class="icon icon-Plaine"></span></div>
                            <div class="address_holder float_left">enquiry@choicebaby.com.my</div>
                        </address>
                        <address class="clear_fix">
                            <div class="icon_holder float_left"><span class="icon icon-Phone2"></span></div>
                            <div class="address_holder float_left">+ 603 6735 5374</div>
                        </address>
                    </div>
                </div>
            </div>
        </section>

【问题讨论】:

    标签: php forms redirect contact-form


    【解决方案1】:

    您是否尝试将ob_start() 放在代码的开头?

    或者,JavaScript 的 document.location 怎么样?

    【讨论】:

      【解决方案2】:

      HTML 代码:

      <form action="includes/sendemail.php" class="contact-form" method="post">
          <input class="form-control name" type="text" name="name" placeholder="Your Name">
          <input class="form-control email" type="email" name="email" placeholder="Your Email">
          <input class="form-control" type="text" name="subject" placeholder="Subject">
          <textarea name="message" placeholder="Your Message"></textarea>
          <button type="submit" class="submit" name="btnSubmit">submit now<i class="fa fa-arrow-circle-right"></i></button>
      </form>
      

      PHP 代码:包含/sendemail.php

      <?php
      if(isset($_POST["btnSubmit"]))
      {
          // Define some constants
          define( "RECIPIENT_NAME", "Choice Baby Enquiry" );
          define( "RECIPIENT_EMAIL", "enquiry@choicebaby.com.my" );
      
          // Read the form values
          $success = false;
          $senderName = isset( $_POST['name'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['name'] ) : "";
          $senderEmail = isset( $_POST['email'] ) ? preg_replace( "/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['email'] ) : "";
          $subject = isset( $_POST['subject'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['subject'] ) : "Enquiry";
          $message = isset( $_POST['message'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['message'] ) : "";
      
          // If all values exist, send the email
          if ( $senderName && $senderEmail && $message ) {
            $recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . ">";
            $headers = "From: " . $senderName . " <" . $senderEmail . ">";
            $success = mail( $recipient, $subject, $message, $headers );
          }
      
          if ( mail( $recipient, $subject, $message, $headers ))
          {
              header ("Location: thanks.html");
              exit ();
          }
      }
      ?>
      

      用这个代码替换..

      【讨论】:

      • 它仍然保持静止,但电子邮件仍然成功发送。谢谢
      • 您的问题解决了吗?还是问题依旧?
      • 尽管研究了答案,但我仍然遇到问题。
      • 好的,html 代码在我问题的编辑部分。
      • 现在没有发邮件了。
      【解决方案3】:

      我会像这样使用 jquery/ajax:

      我想你有一个文件,里面有你的表单

      <!DOCTYPE html>
      
      <html lang="en-US">
      <head>
      <meta charset="UTF-8"/>
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta name="description" content="">
      <meta name="keywords" content=""> 
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
      <script type="text/javascript" src="functions.js"></script>
      </head>
      
       <body>
      
          <form  role="form" method="post" id="subscribe">
             <input type="text" name="name" id="name" value="" placeholder="Name"/>
             <input type="email" name="email" id="email" value="" placeholder="Email"/>
             <input type="text" name="subject" id="subject" value="" placeholder="Subject"/>
             <textarea rows="4" cols="50" name="message" id="message"> </textarea>
             <input type="submit" class="button" name="submit" value="Submit">
          </form>
          <div class="message"></div>
          <div class="message-notice"></div>
      
       </body>
       </html>
      

      你的 PHP 文件,其中有你的 php 脚本可以工作。(假设它被称为 subscribe.php)

      <?php
      
      // Define some constants
      define( "RECIPIENT_NAME", "Choice Baby Enquiry" );
      define( "RECIPIENT_EMAIL", "enquiry@choicebaby.com.my" );
      
      // Read the form values
      $success = false;
      $senderName = isset( $_POST['name'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['name'] ) : "";
      $senderEmail = isset( $_POST['email'] ) ? preg_replace( "/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['email'] ) : "";
      $subject = isset( $_POST['subject'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['subject'] ) : "Enquiry";
      $message = isset( $_POST['message'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['message'] ) : "";
      
      // If all values exist, send the email
      if ( $senderName && $senderEmail && $message ) {
        $recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . ">";
        $headers = "From: " . $senderName . " <" . $senderEmail . ">";
        $success = mail( $recipient, $subject, $message, $headers );
      }
      
      if ( mail( $recipient, $subject, $message, $headers )) {
          //header ("Location: thanks.html");
          echo "success";
          exit ();
      }else{
          echo "fail";
      }
      
      ?>
      

      你缺少的是这个 javascript 脚本:

      ;(function($, window, document, undefined) {
      var $win = $(window);
      var $doc = $(document);
      
      $doc.ready(function() {
      
          $('#subscribe').submit(function() {
              $.ajax({
                  url: 'subscribe.php', 
                  data: $('#subscribe').serialize(),
                  type: 'POST',
                  success: function(msg) {
                      if(msg=="success"){
                          $("#subscribe").hide(); //Hide your form
                          $(".message").show(); //Show the message
                          $(".message").html('<span style="color:green;">You have successfully subscribed to our mailing list.</span>');
                          window.setTimeout(function(){
                              window.location.href = "http://www.yoururl.com/thanks.html"; 
                          }, 10000); //After 10seconds you will be redirect to the thanks page.
                          document.getElementById("subscribe").reset();
                      } else {
                          $(".message-notice").fadeIn("slow");
                          $(".message-notice").html(msg);
                      }
                  }
              });
              return false;
          });
      });
      
      })(jQuery, window, document);
      

      希望对你有帮助。

      【讨论】:

      • 您好,非常感谢您的回复。真的很感激。我试过了,但还是不行。不过谢谢。
      • 你好 nabilahakram,之前有一个小的 js 错误。现在修好了。如果需要,只需复制并粘贴代码。我现在测试并且它有效。如果您仍然遇到麻烦,请告诉我。
      • 查看你的 php 代码,我在 if 语句中添加了两行代码 echo "success";echo "fail";
      【解决方案4】:

      在表单标签中加上method="post"

      <form action="includes/sendemail.php" class="contact-form" method="post">
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-11
        • 2012-11-11
        • 1970-01-01
        • 1970-01-01
        • 2013-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多