PHP联系人表单处理程序不工作?

PHP联系人表单处理程序不工作?,php,forms,email,redirect,handler,Php,Forms,Email,Redirect,Handler,我需要一个非常简单但有效的PHP表单处理程序来处理此表单: <form id="contact" method="post" action="contact_handle.php"> <label for="name">Name:</label> <input type="text" class="text_style" placeholder="John Doe" name="name" /><br /> <label for=

我需要一个非常简单但有效的PHP表单处理程序来处理此表单:

<form id="contact" method="post" action="contact_handle.php">
<label for="name">Name:</label>
<input type="text" class="text_style" placeholder="John Doe" name="name" /><br />
<label for="email">Email:</label> 
<input type="email" class="text_style" placeholder="email@example.com" name="email" /><br />   
<label for="message">Subject:</label>
<textarea class="areawidth" rows="4" name="message" /></textarea><br />
<button id="contactbutton" type="submit">Submit</button>
</form>  

姓名:

电邮:
主题:
提交
这是我目前拥有的,但它不会发送电子邮件,也不会像我预期的那样重定向。我似乎不知道发生了什么

<?php  
$invalid = '';
$my_email = 'my@email.com'; 

// Validate input:
if(empty($_POST['name'])  ||
   empty($_POST['email']) ||
   empty($_POST['message']))
{
    $invalid.= "\n All fields are required";
}
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];   

// Validate email:
if (!preg_match(
"/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i",
$email))
{
    $invalid .= "\n Invalid email address";
}

// Send email if no errors detected:
if( empty($invalid))
{
$to = $my_email;
$subject = "Contact form submission: $name";
$body = "You have received a new message. ".
" Here are the details:\n Name: $name \n ".
"Email: $email\n Message:\n $message";
$headers = "From: $email\n";
$headers .= "Reply-To: $email";
mail($to,$subject,$body,$headers);  

//redirect to the thank you page:    
header('Location: contact_thanks.php');
}
?>    


提交后,我需要联系_handle.php,它显示为空,无法重定向

如果您提供了所有代码,问题是您的表单抛出了一个错误(通过向
$invalid
添加文本,但是没有代码可以处理
$invalid
不是空的。要解决此问题,请在结束
}
后添加此代码:

echo $invalid;

我认为重定向必须是浏览器的第一个输出,因此如果输出其他内容,它将无法工作

你为什么不把感谢页面包括进来,而不是重定向到它,比如说

include 'contact_thanks.php';

您是否在本地主机或实时服务器上测试此问题?是否收到任何错误消息?表单处理程序的第10行似乎有一个输入错误-您正在将错误消息存储在
$error
变量中,而它可能是
$invalid
,这是其余代码所使用的。哎呀,修复了输入错误,仍然是相同的t我在localhost和live server上都进行了测试,两者都不起作用。没有显示错误消息。只有一个空白屏幕,没有电子邮件。添加
ini\u集('display\u errors',1);错误报告(E\u ALL)
contact_handle.php
的顶部。我认为发生了一个致命错误,您的设置阻止了它显示任何内容。或者,如果您有一个无效的表单,则不会打印任何内容,也不会发生重定向。此$email_地址来自何处?谢谢,表单现在会显示任何错误。简单的错误应该已经存在很容易注意到。这让表单工作起来了!谢谢!我本来应该这样做的。我的网站已经用PHP做了模板,所以简单的包含要容易得多。对不起,我不能投票给你,我还没有足够的分数。