2014-02-11 48 views
0

我已经浏览了很多不同网站上的帖子,包括这一个,仍然无法弄清楚发生了什么事。首先,我没有收到一封电子邮件到我想要的电子邮件中放入PHP文件。我的重定向也不是我所指定的html页面,而是转到PHP文件,这个文件在查看时只是一个空白页面。HTML和PHP表单正常工作

HTML

<form action="result.php" method="post" enctype="text/plain" name="form1"> 
<table width="500" border="0" align="center" cellspacing="0"> 
<tr> 
<td>Name:</td> 
<td><input name="name" type="text" size="30" maxlength="30"></td> 
</tr> 
<tr> 
<td>Email:</td> 
<td><input name="email" type="text" size="30" maxlength="50" placeholder="[email protected]"></td> 
</tr> 
<tr> 
<td>Phone:</td> 
<td><input name="phone" type="text" size="30" maxlength="20"></td> 
</tr> 
<tr> 
<td>Inquiry type:</td> 
<td><select name="type"> 
<option value="1" selected>Residential Inquiry</option> 
<option value="2">Small Business Inquiry</option> 
<option value="3">Web Design Inquiry</option> 
<option value="4">Existing Client Inquiry</option> 
</select></td> 
</tr> 
<tr> 
<td>Message:</td> 
<td><textarea name="message" cols="45" rows="5"></textarea></td> 
</tr> 
<tr> 
<td>&nbsp;</td> 
<td><input name="submit" type="submit" value="Submit" /> 
<input name="reset" type="reset" value="Reset" /></td> 
</tr> 
</table> 
</form> 

PHP

<?php 

$name = $_POST['name']; 
$visitor_email = $_POST['email']; 
$phone = $_POST['phone']; 
$subject = $_POST['type']; 
$message = $_POST['message']; 

if(IsInjected($visitor_email)) 
{ 
echo "Bad email value!"; 
exit; 
} 

$email_from = '[email protected]';//<== update the email address 
$email_subject = "$subject"; 
$email_body = "$message" + "phone"; 

$to = "[email protected]"; //<== update the email address 
$headers = "From: $email_from \r\n"; 
$headers = "Reply-To: $visitor_email \r\n"; 
//Send the email! 
mail($to,$email_subject,$email_body,$headers); 
//done. redirect to thank-you page. 
header('Location: http://www.example.com/example.html'); 


// Function to validate against any email injection attempts 
function IsInjected($str) 
{ 
$injections = array('(\n+)', 
'(\r+)', 
'(\t+)', 
'(%0A+)', 
'(%0D+)', 
'(%08+)', 
'(%09+)' 
); 
$inject = join('|', $injections); 
$inject = "/$inject/i"; 
if(preg_match($inject,$str)) 
{ 
return true; 
} 
else 
{ 
return false; 
} 
} 

?> 
+0

PHP不处理'文/ plain'。 –

回答

2

删除此

​​ 从表单标签

并添加此

<form action="result.php" method="post" name="form1"> 
+0

我仍然收到相同的错误,没有电子邮件进来,它重定向到空白的PHP页面。 – deceptionx

+0

那是你需要在result.php上打开错误并检查错误的问题的一部分。 –

+0

我收到了我想要的电子邮件。重定向是最后一件工作不正确。 – deceptionx

1

您已经设置的形式编码,以“人类可读的调试模式”

enctype="text/plain" 

参见the specification:使用纯文本/格式

有效载荷旨在是人类可读的。 由于格式不明确(例如,没有办法在值的末尾区分换行符中的文字换行符),因此它们不能可靠地被计算机解释。

不这样做。取出属性。

+0

我删除了部分表单代码。我仍然没有收到任何电子邮件,并提交仍然重定向到空白result.php页面,而不是我希望它的HTML页面。我确定它也是正确的电子邮件多次。 – deceptionx

+0

查看您的服务器日志。 PHP会报告任何错误吗? – Quentin

0

可能需要拼接的头信息:

$headers = "From: $email_from \r\n"; 
$headers .= "Reply-To: $visitor_email \r\n"; 
+0

我最终将它更改为$ headers =“Reply-To:”。 $ visitor_email。为 “\ r \ n” 个;并删除另一个。 – deceptionx