PHP和联系表格

时间:2014-11-30 23:26:39

标签: php html5

我无法正确填写我的联系表单的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 个答案:

答案 0 :(得分:9)

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

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

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

因此,您需要将表单更改为

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

根据你留下的评论:

&#34;我仍然遇到问题,而不是向我提供他们输入的电子邮件,而是提供由托管公司创建的电子邮件,这是不好的。&#34;

答:这很可能是因为您在代码中使用From:的方式,这是该人的姓名。邮件正在等待电子邮件地址。

替换:

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

使用:

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

并在$subject = 'Hello';

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

这样,您将在电子邮件中看到此人的姓名,同时拥有有效的&#34;来自&#34;报头中。


附加说明:

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

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

否则,任何人都可以发送没有任何信息的电子邮件。

您还可以像else{}

一样添加else { echo "Please fill in all the fields."; }
  • 这是一种非常基本的方法。

答案 1 :(得分:1)

您的表单需要属性

method="POST"

如果没有这个,浏览器默认为method="GET",它会在网址中提交表单,例如http://example.com/default.php?name=First%20Last&email=...

答案 2 :(得分:1)

您应该指定POST方法:

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