PHP和联系表单

3

我在联系表单的PHP脚本上遇到了一些问题。我成功使其向我发送电子邮件,但是电子邮件中没有显示名称、电子邮件或文本。

PHP脚本:

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$to = 'myemail@email.comm';
$subject = 'Hello';

mail ($to, $subject, $message, "From: " . $name);
echo "Your Message has been sent.";
?>

联系表单

<form role="form" action="contact.php">
<div class="form-group">
<label for="InputName">Name</label>
<input name="name" type="text" class="form-control" id="InputName" placeholder="Enter Name">
</div>

<div class="form-group">
<label for="InputEmail">Email Address</label>
<input name="email" type="email" class="form-control" id="inputEmail" placeholder="Enter email">
</div>

<div class="form-group">
<label for="InputText">Message</label>
<input name="message" type="text" class="form-control" id="InputText" placeholder="Enter Text">
</div>

<button name="submit" type="submit" class="btn btn-default">Send</button>
</form>
3个回答

9

您正在使用POST变量,但是您的表单如下:

<form role="form" action="contact.php">

该表单没有定义POST方法。当未定义方法时,默认为GET。

因此,您需要更改表单为

<form role="form" action="contact.php" method="post">

从你留下的评论来看:

“我还面临一个问题,那就是不会把输入的电子邮件地址发送给我,而是发送由托管公司创建的无效电子邮件地址。”

A: 最可能的原因是你在代码中使用了 From:,这里应该填写人的姓名,而邮件需要填写电子邮件地址。

请将以下内容替换为:

mail ($to, $subject, $message, "From: " . $name);

使用:

mail ($to, $subject, $message, $header);

$subject = 'Hello';下面添加以下内容。
$header = "From: ". $name . " <" . $email . ">\r\n";

这样,您将在电子邮件中看到发送者的姓名,并拥有有效的“发件人”标题。

附加说明:

我还建议您使用以下方法测试是否有任何字段未留空:

if(!empty($_POST['name']) && !empty($_POST['email']) && !empty($_POST['message']))
{
    // execute code
}

否则,任何人都可以发送没有任何信息的电子邮件。
你还可以添加一个else{}像这样:else { echo "请填写所有字段。"; }
  • 这是一种非常基本的方法。

谢谢,它有效。我仍然有一个问题,即它不是给我他们输入的电子邮件,而是给了一个由托管公司创建的无用电子邮件。 - Robert
@Robert 我针对可能为空的字段进行了额外的编辑。您会在“附加说明”下面找到它。 - Funk Forty Niner
1
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Guilherme Nascimento
感谢您的出色回答,+1 - Guilherme Nascimento
@GuilhermeNascimento 很高兴能和你交流,感谢你的点赞 :) - Funk Forty Niner
显示剩余4条评论

1

您应该指定POST方法:

<form role="form" method="POST" action="contact.php">

1
你的表单需要属性。
method="POST"

没有这个属性,浏览器会默认使用method="GET",这会将表单提交到url中,例如:http://example.com/default.php?name=First%20Last&email=...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接