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

问题描述:

我需要一个非常简单的,但有效的PHP形式处理,将这种形式的合作: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 protected]" 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 = '[email protected]'; 

// 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'); 
} 
?>  

当它被提交时,它会带我到contact_handle.php显示空白,并无法重定向。

+0

您是在本地主机上还是在线服务器上测试此功能?你是否收到任何错误讯息? – 2012-04-17 21:53:25

+0

您的表单处理程序的第10行似乎存在拼写错误 - 您将错误消息存储在'$ error'变量中,而它应该是'$ invalid',这是其余代码使用的。 – Indrek 2012-04-17 21:56:24

+0

糟糕,修正了错字,尽管如此,结果仍然相同。我在本地主机和活动服务器上都进行了测试,两者都不起作用。没有错误信息显示。只是一个空白的屏幕和电子邮件。 – 2012-04-17 22:00:23

我认为重定向必须是第一个输出到浏览器,所以如果什么都正在输出它不会工作

为什么不”。如果您只包含感谢页面而不是重定向到该页面,即。

include 'contact_thanks.php'; 
+0

这使得表单工作!谢谢!首先我应该做到这一点。我的网站已经使用PHP进行模板化,所以简单的包含更容易。对不起,我不能投票给你,我还没有足够的积分。 – 2012-04-17 22:10:55

+0

没问题,很高兴能得到帮助。 – jx12345 2012-04-18 06:20:20

如果您提供的所有代码,问题是,你的形式抛出一个错误(通过添加文本$invalid,但没有代码来处理$invalid是空的。为了解决这个问题,加这在最后收盘}后:

echo $invalid; 
+0

谢谢,窗体现在显示错误,如果有的话。简单的错误应该很容易注意到。 – 2012-04-17 22:07:45