isset($ _ POST [' submit'])总是假的

时间:2016-12-31 21:30:15

标签: php html

我正在尝试使用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语句,会有什么奇怪的, 提交后,将出现一条错误消息:未定义的索引:主题,名字,姓氏,电子邮件,消息......

我完全糊涂了.. 期待听到一些建议。 提前谢谢。

1 个答案:

答案 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);
}
?>