联系表格不发送电子邮件
问题描述:
在阅读了关于这个问题的所有其他文章后,它并没有帮助我。我创建了一个HTML格式的联系表单,我觉得在PHP中缺少一些东西,我需要它提交后显示“您的电子邮件已成功发送”消息。另外,我收到的电子邮件提交后不显示发布的信息,不知道如何得到它做的是联系表格不发送电子邮件
/* Logic Script */
<?php
// define variables and set to empty values
$first_nameErr = $emailErr = $last_nameErr = $commentsErr = "";
$first_name = $last_name = $email = $comments = "";
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["first_name"])) {
$first_nameErr = "First Name is required";
} else {
$name = test_input($_POST["first_name"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$first_name)) {
$nameErr = "Only letters and white space allowed";
}
}
if (empty($_POST["last_name"])) {
$last_nameErr = "Last Name is required";
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$last_name)) {
$last_nameErr = "Only letters and white space allowed";
}
}
if (empty($_POST["email"])) {
$emailErr = "Email is required";
} else {
$email = test_input($_POST["email"]);
// check if e-mail address is well-formed
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}
}
if (empty($_POST["comments"])) {
$comments = "";
} else {
$comments = test_input($_POST["comments"]);
}
}
//Code for sending the e-mail//
$email = $_POST["email"];
$to = "[email protected]";
$subject = "Canada Algae E-mail Contact";
$headers = "From: $email\n";
$message = "A visitor to your site has sent the following email address to be added to your mailing list.\n
Email Address: $email
Name: $first_name $last_name
Comments: $comments";
print("Your form was submitted successfully");
mail($to,$subject,$message,$headers);
?>
的HTML:。
/* display code */
<div class="border"></div>
<body>
<div id="wrapper">
<div id="header">
<header class="nav">
<img src="images/CA_Logo.png" alt="Canada Algae Logo">
<a href="#" class="flt_r">
Contact Us
</a>
</header>
</div>
<div id="main">
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post" id="contact_form">
<label for="first_name">First Name</label>
<input type="text" name="first_name">
<span class="error"> <?php echo $first_nameErr;?> </span>
<br />
<label for="last_name">Last Name</label>
<input type="text" name="last_name">
<span class="error"> <?php echo $last_nameErr;?> </span>
<br />
<label for="email">E-mail</label>
<input type="text" name="email">
<span class="error">
<?php echo $emailErr;?>
</span>
<br />
<label for="comments">Comments</label>
<textarea name="comments">Type your comments here</textarea>
<input type="submit" value="submit">
</form>
</div>
<div id="footer">
<p>Contact Us!</p>
</div>
</div>
</body>
<div class="border"></div>
</html>
这是所有在一个文件
答
在你PHP - 你有
$name = test_input($_POST["name"]);
但在您的html输入被称为first_name。
您需要的PHP更改为:
$name = test_input($_POST["first_name"]);
也 - 你实际上显示从表单提交的名称和注释 - 好像你只使用电子邮件地址。
+0
感谢指出,我没有修复它 –
+0
嗨Gavgrif - 只是一个简短的说明,说我们喜欢这里没有签名的帖子。我们倾向于将剖面块视为信号,并且不需要重复。谢谢! – halfer
该PHP代码是否与HTML表单包含在同一页上?表单被设置为使用$ _SERVER ['PHP_SELF']重定向到自身,所以如果它们是两个不同的文件,则PHP将不执行任何操作。 – carbide20
它是在同一页上是的 –
几乎没有任何理由使用'stripslashes',特别是像这样的输入。魔术行情在几年前就被杀害了。 – tadman