我正在尝试将我的联系表单重定向,然后邮寄。但是我遇到了以下错误:
警告:无法修改标头信息 - 已发送的标头 (输出从/home3/ettrick/public_html/test3/mail.php:12开始) 第80行/home3/ettrick/public_html/test3/mail.php
<?php
$email_message .= "Name: ".($name)."\n";
$email_message .= "Email: ".($email)."\n";
$email_message .= "Message: ".($message)."\n";
mail($ToEmail, $EmailSubject, $email_message, $mailheader);
?>
<?php
if(isset($_POST['email'])) {
// EDIT THE 2 LINES BELOW AS REQUIRED
$email_from = "newsletter@kingdomhearts7.com";
$email_to = "fritzgattereau@gmail.com";
$email_subject = "Contact Form";
$email_message = "Form details below.\n\n";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "Name: ".clean_string($name)."\n";
$email_message .= "Email: ".clean_string($email)."\n";
$email_message .= "Message: ".clean_string($message)."\n";
// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
if(mail){
echo "Thank you for contacting us. We will be in touch with you very soon.";
}
else {
echo "There's been an error. Please try again.";
}
?>
<?php
}
?>
<?php
header( 'Location: http://kingdomhearts7.com/test3' ) ;
?>
如果有人能帮助我,我真的很感激,因为我是一个完整的菜鸟。
感谢。
更新:我能够通过删除一些空格来修复标题错误,但现在我遇到了一个新问题。
解析错误:语法错误,第28行&gt;&gt; /home3/ettrick/public_html/test3/mail.php中的意外T_CONSTANT_ENCAPSED_STRING
<?php
$email_message .= "Name: ".($name)."\n";
$email_message .= "Email: ".($email)."\n";
$email_message .= "Message: ".($message)."\n";
mail($ToEmail, $EmailSubject, $email_message, $mailheader);
?>
<?php
if(isset($_POST['email'])) {
// EDIT THE 2 LINES BELOW AS REQUIRED
$email_from = "newsletter@kingdomhearts7.com";
$email_to = "fritzgattereau@gmail.com";
$email_subject = "Contact Form";
$email_message = "Form details below.\n\n";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "Name: ".clean_string($name)."\n";
$email_message .= "Email: ".clean_string($email)."\n";
$email_message .= "Message: ".clean_string($message)."\n";
// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n"
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
if(mail){
echo "Thank you for contacting us. We will be in touch with you very soon.";
}
else {
echo "There's been an error. Please try again.";
}
?>
<?php
}
?>
<?php
header( 'Location: http://kingdomhearts7.com/test3' ) ;
?>
答案 0 :(得分:1)
删除所有出现的
?>
<?php
因为他们已经开始输出(中间的换行符),所以在开始发送标题之前。
另外,if(isset($_POST['email']))
,您正在执行echo
文字。这也会导致输出阻止您发送标题。
要解决此问题,只有在没有echo
任何内容的情况下才会发送标题(特别是如果您要发送'位置'标题。因为甚至会回复文本,因为您不会得到读它?)。
或者在开始时使用ob_start()
,在ob_end_flush()
之后使用header()
。 (但这仍然意味着你正在回复那些你无法阅读的文字,因为header( "Location: ...");
会在你阅读回音文本之前重定向。
答案 1 :(得分:1)
切勿在{{1}}和<?php
?>