我正在尝试使用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);
}
?>
此外,如果我删除emailto.php中的if-else语句,会有什么奇怪的, 提交后,将出现一条错误消息:未定义的索引:主题,名字,姓氏,电子邮件,消息......
我完全糊涂了.. 期待听到一些建议。 提前谢谢。
答案 0 :(得分:2)
从表单中删除此enctype='text/plain'
,它将开始工作; 我保证。如果失败了,那么你需要找出原因并确保邮件可供您使用。
旁注:您还应检查是否有任何输入为空(以及required
哪个有帮助。)
并为mail()
使用正确的(完整)标头:
否则,您的邮件可能会被视为垃圾邮件或完全被拒绝。
邮件的第四个参数应该有一个有效的From: <email>
。
即。并从手册:
<?php
$to = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>
&#34;此外,奇怪的是,如果我删除emailto.php中的if-else语句,提交后会出现一条错误消息:unsifined index:subject,firstname,lastname ,emailadd,消息......&#34;
enctype='text/plain'
形式引起的,它不是使用POST数组的有效enctype。修改强>
将if/else
添加到mail()
。如果回复&#34;休斯顿我们遇到问题&#34; ,那么您的问题就出现了。
如果它回显&#34; Mail Sent!&#34; 但没有收到邮件,请查看您的垃圾邮件箱。邮件完成了它的工作,你需要找出它从未被发送/接收的原因。
<?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);
}
?>