2016-12-31 83 views
3

我试图创建一个使用php的联系表单,并有一些麻烦。

条件:isset($_POST['submit'])总是会产生错误,即使我只是提交一个空白页。

这里是我的代码:

contact.html部分:

<form action='emailto.php' method='POST' enctype='text/plain'> 
First Name:<br> 
<input type='text' name='firstname'><br> 
Last Name:<br> 
<input type='text' name='lastname'><br> 
Email Address:<br> 
<input type='text' name='emailadd' ><br> 
Subject:<br> 
<input type='text' name='subject' ><br> 
Message:<br> 
<textarea name='message' rows=5 cols=30 ></textarea><br><br> 
<input type='submit' value='Send' name='submit'> 
</form> 

emailto.php:

<?php 
if (isset($_POST['submit'])) { 
$to = "emailaddress"; 
$subject = $_POST['subject']; 
$firstname = $_POST['firstname']; 
$lastname = $_POST['lastname']; 
$Emailadd = $_POST['emailadd']; 
$Message = $_POST['message']; 
$Body= ""; 
$Body .= $firstname; 
$Body .= $lastname; 
$Body .= "\n"; 
$Body .= $Emailadd; 
$Body .= "\n"; 
$Body .= $Message; 
mail($to,$subject,$Body); 
echo "Mail Sent! <a href='contact.html'>Go Back</a>"; 
} else { 
header("Location: contact.html"); 
exit(0); 
} 
?> 

此外,有什么奇怪的是,如果我删除if-else语句在emailto.php, 提交后,将会出现一个错误信息:未定义的索引:主题,名字,姓氏,电子邮件,消息...

我完全困惑.. 期待听到一些建议。 在此先感谢。

+0

另请注意,isset()对于定义为空字符串的变量(例如空白POST数据字段)返回true。 –

回答

2

从您的表格中删除这enctype='text/plain'它会开始工作; 我保证。如果它失败了,那么你需要找出原因并确保邮件可供你使用。

旁注:您还应该检查是否有任何输入是空的(并且required有帮助)。

,并使用正确的(全)标头mail()

否则,您可以mailout被视为垃圾邮件或干脆拒绝。

作为邮件第四个参数的一部分,应该有一个有效的From: <email>

I.e.从手册:

<?php 
$to  = '[email protected]'; 
$subject = 'the subject'; 
$message = 'hello'; 
$headers = 'From: [email protected]' . "\r\n" . 
    'Reply-To: [email protected]' . "\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 

mail($to, $subject, $message, $headers); 
?> 

“再说了,有什么奇怪的是,如果我删除emailto.php的if-else语句,提交后,会出现一个错误信息:undifined指数:主题,姓,姓氏,emailadd,消息...”

  • 再次;这是由enctype='text/plain'引起的,它不是用于使用POST数组的有效enctype。

编辑:

添加if/elsemail()。如果它回声“休斯顿我们有一个问题”,那么你的问题就出现了。

如果回显“邮件已发送!”但没有收到邮件,然后看看你的垃圾邮件。邮件已经完成了它的工作,你需要找出它从未被发送/接收的原因。

<?php 
if (isset($_POST['submit'])) { 
$to = "emailaddress"; 
$subject = $_POST['subject']; 
$firstname = $_POST['firstname']; 
$lastname = $_POST['lastname']; 
$Emailadd = $_POST['emailadd']; 
$Message = $_POST['message']; 
$Body= ""; 
$Body .= $firstname; 
$Body .= $lastname; 
$Body .= "\n"; 
$Body .= $Emailadd; 
$Body .= "\n"; 
$Body .= $Message; 

if(mail($to,$subject,$Body)){ 
echo "Mail Sent! <a href='contact.html'>Go Back</a>"; 
} else { echo "Houston, we have a problem"; } 

} else { 
header("Location: contact.html"); 
exit(0); 
} 
?> 
+2

类似于:http://stackoverflow.com/questions/7628249/method-post-enctype-text-plain-are-not-compatible – Progrock

+0

@Progrock是的。但是,为了帮助他们,我在答案中添加了一些内容。希望一切都会顺利并按预期进行。 –

+0

THX!真的很有帮助! –

相关问题