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 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器