duanlushen8940 2014-08-21 08:34
浏览 44
已采纳

PHP表单提交工作但错误而不是重定向[重复]

This question already has an answer here:

Can someone check this php code and tell me why I'm getting this error:

"Warning: Cannot modify header information - headers already sent by (output started at /home/itechcom/public_html/DesignsbyGabe.com/send_form_email.php:144) in /home/itechcom/public_html/DesignsbyGabe.com/send_form_email.php on line 146"

PHP:

<?php
if(isset($_POST['email'])) {

    // EDIT THE 2 LINES BELOW AS REQUIRED

    $email_to = "Jonathansumner90@gmail.com";
    $email_subject = "contact from Designs by Gabe form";

    function died($error) {

        // your error code can go here

        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();
    }



    // validation expected data exists

    if(!isset($_POST['first_name']) ||
        !isset($_POST['last_name']) ||
        !isset($_POST['email']) ||
        !isset($_POST['telephone']) ||
        !isset($_POST['comments'])) {

        died('We are sorry, but there appears to be a problem with the form you submitted.');       

    }

    $first_name = $_POST['first_name']; // required
    $last_name = $_POST['last_name']; // required
    $email_from = $_POST['email']; // required
    $telephone = $_POST['telephone']; // not required
    $comments = $_POST['comments']; // required

    $error_message = "";
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
  if(!preg_match($email_exp,$email_from)) {
    $error_message .= 'The Email Address you entered does not appear to be valid.<br />';

  }

    $string_exp = "/^[A-Za-z .'-]+$/";

  if(!preg_match($string_exp,$first_name)) {

    $error_message .= 'The First Name you entered does not appear to be valid.<br />';

  }

  if(!preg_match($string_exp,$last_name)) {

    $error_message .= 'The Last Name you entered does not appear to be valid.<br />';

  }

  if(strlen($comments) < 2) {

    $error_message .= 'The Comments you entered do not appear to be valid.<br />';

  }

  if(strlen($error_message) > 0) {

    died($error_message);

  }

    $email_message = "Form details below.

";



    function clean_string($string) {

      $bad = array("content-type","bcc:","to:","cc:","href");

      return str_replace($bad,"",$string);

    }



    $email_message .= "First Name: ".clean_string($first_name)."
";

    $email_message .= "Last Name: ".clean_string($last_name)."
";

    $email_message .= "Email: ".clean_string($email_from)."
";

    $email_message .= "Telephone: ".clean_string($telephone)."
";

    $email_message .= "Comments: ".clean_string($comments)."
";





// create email headers

$headers = 'From: '.$email_from."
".

'Reply-To: '.$email_from."
" .

'X-Mailer: PHP/' . phpversion();

@mail($email_to, $email_subject, $email_message, $headers);  

?>



<!-- include your own success html here -->
 <?php
 header("Location: thankyou.html");
 ?>




<?php

}
?>

HTML:

<form action="send_form_email.php" method="post" name="contactform">



                <label for="first_name">First Name *</label>
                <input type="text" name="first_name" size="30" maxlength="50" />


                <label for="last_name">Last Name *</label>
                <input type="text" name="last_name" size="30" maxlength="50" />

                <label for="email">Email Address *</label>
                <input type="text" name="email" size="30" maxlength="80" />


                <label for="telephone">Telephone Number</label>
                <input type="text" name="telephone" size="30" maxlength="30" />

                <label for="comments">Comments *</label>
                <textarea name="comments" rows="6" cols="25"></textarea>

                <input id="submit" style="margin-right: 30px;" type="submit"     value="Submit" />

This question has been asked before but not in this context. The messages go through but instead of redirecting it gives me an error. I use this same form submission code for other sites and it works fine.

</div>
  • 写回答

5条回答 默认 最新

  • doudeng2057 2014-08-21 08:42
    关注

    Put the header command inside the first PHP tags

    @mail($email_to, $email_subject, $email_message, $headers);  
    header("Location: thankyou.html");
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀