尝试创建联系我们表单

时间:2014-04-04 22:30:31

标签: php html forms email post

此代码的目标是让某人填写它然后将其键入的消息发送到我的电子邮件。我在线查看了一些参考资料,并且对于php来说是一个新手我很难理解为什么当我点击发送按钮时它会显示我的php页面代码。我的问题是,为什么我在按联系表格上的发送按钮时没有收到电子邮件?

<form action="mail.php" method="POST">
<p>Name</p> <input type="text" name="name">
<p>Email</p> <input type="text" name="email">

<p>Priority</p>
<select name="priority" size="1">
<option value="Low">Low</option>
<option value="Normal">Normal</option>
<option value="High">High</option>
</select>
<br />

<p>Type</p>
<select name="type" size="1">
<option value="update">Question</option>
<option value="change">Information Change</option>
<option value="addition">Information Addition</option>
<option value="new">Misc.</option>
</select>
<br />

<p>Message</p><textarea name="message" rows="6" cols="25"></textarea><br />
<input type="submit" value="Send"><input type="reset" value="Clear">
</form>

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$priority = $_POST['priority'];
$type = $_POST['type'];
$message = $_POST['message'];
$formcontent=" From: $name \n Priority: $priority \n Type: $type \n Message: $message";
$recipient = "dnasim09@gmail.com";
$subject = "Contact Form";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "Thank You!" . " -" . "<a href='form.html' style='text-     decoration:none;color:#ff0099;'> Return Home</a>";
?>

感谢所有帮助。谢谢!

2 个答案:

答案 0 :(得分:1)

  • 您的代码不会检查错误。
  • 你在同一页面有php,并没有提到它的名称 表格文件(意味着您的行为令人怀疑。)

设置action="",以便将表单发送到页面本身。只有在发布表单时才执行Php代码,因为我向你提交了一个name按钮,如果在%_POST数组中存在提交,则告诉Php何时执行此代码。因为你将在同一页面,所以我改变了锚标记的文本。

注意:此代码假定正在配置电子邮件服务器的服务器上执行,并且在执行期间未发生错误

<form action="" method="POST">
<p>Name</p> <input type="text" name="name">
<p>Email</p> <input type="text" name="email">

<p>Priority</p>
<select name="priority" size="1">
<option value="Low">Low</option>
<option value="Normal">Normal</option>
<option value="High">High</option>
</select>
<br />

<p>Type</p>
<select name="type" size="1">
<option value="update">Question</option>
<option value="change">Information Change</option>
<option value="addition">Information Addition</option>
<option value="new">Misc.</option>
</select>
<br />

<p>Message</p><textarea name="message" rows="6" cols="25"></textarea><br />
<input type="submit" name="sendemail" value="Send"><input type="reset" value="Clear">
</form>

<?php
if(isset($_POST["sendemail"]))
{
$name = $_POST['name'];
$email = $_POST['email'];
$priority = $_POST['priority'];
$type = $_POST['type'];
$message = $_POST['message'];
$formcontent=" From: $name \n Priority: $priority \n Type: $type \n Message: $message";
$recipient = "dnasim09@gmail.com";
$subject = "Contact Form";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "Thank You!" . " -" . "<a href='form.html' style='text-     decoration:none;color:#ff0099;'> Go Somewhere you are already home ;)</a>";
}
?>

答案 1 :(得分:0)

许多人对“联系我们”表单也有一个非常常见的错误。

$email = $_POST['email'];
$mailheader = "From: $email \r\n";

这将破坏SPF并导致DMARC失败,如果您使用的邮件服务器上启用了DMARC并且GMAIL启用了DMARC,您将永远不会收到某些人的消息。

由于DMARC是一个更新的协议,很多旧的cookie切割代码用于联系我们表格 - 不考虑这一点。

您可以在此处详细了解:"DMARC - Contact Us Form Nightmare"

建议的解决方法是:

$email = "dnasim09@gmail.com";
$subject = "Contact Form Email: " . $_POST['email'];

这样 - 您可以避免文章中的问题大纲。您将无法快速点击“回复”按钮,但至少您将收到启用了DMARC的客户的电子邮件。