[英]Stop Sending email and Success Message
嗨,我是初学者和PHP。 我使用了来自w3学校的此验证示例...该表单正在正确验证和发送邮件。 然而。 如果我按提交而不填写任何内容。 它仍然发送空电子邮件。 除非所有字段都已填写,否则如何防止它不发送电子邮件...验证所有内容后如何显示“谢谢”消息。 我对php很陌生。 如果你们可以复制我的代码并弄弄它,那就太好了。 这样我就可以复制粘贴了。
邮件转功能码:
$message = "
<html>
<head>
<title>HTML email</title>
</head>
<body>
<p>This email contains HTML Tags!</p>
<table>
<tr>
<th>Firstname:</th>
<th>Email:</th>
<th>Interest:</th>
<th>comment:</th>
</tr>
<tr>
<td>$name</td>
<td>$email</td>
<td>$int</td>
<td>$comment</td>
</tr>
</table>
</body>
</html>
";
?>
<?php
// Always set content-type when sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
// More headers
$headers .= 'From: <webmaster@example.com>' . "\r\n";
$headers .= 'Cc: myboss@example.com' . "\r\n";
mail($to,$subject,$message,$headers);
?>
验证码:
<?php
// define variables and set to empty values
$nameErr = $emailErr = $genderErr = $intErr = "";
$name = $email = $gender = $comment = $int = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Name is required";
} else {
$name = test_input($_POST["name"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
$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["int"])) {
$intErr = "Interest is required";
} else {
$int = test_input($_POST["int"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$int)) {
$intErr = "Only letters and white space allowed";
}
}
if (empty($_POST["comment"])) {
$comment = "";
} else {
$comment = test_input($_POST["comment"]);
}
if (empty($_POST["gender"])) {
$genderErr = "Gender is required";
} else {
$gender = test_input($_POST["gender"]);
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
首先,我建议您在客户端使用javascript而不是在服务器端进行表单验证。 这将帮助服务器减轻负载。 提交之前,您可以在Google上搜索如何使用javascript验证表单。
如果您仍然希望在服务器端执行此操作,那么当您找到一个空白字段时,您可以使用“标题”将用户重定向到表单页面,只需显示该空白字段并要求他们再次填写即可。 (您可以再次看到Javascript的重要性,它将为用户节省等待服务器响应的时间)。
header("Location:Your-FormFile-Name");
仅当所有内容都已填充且不为空时,才使用邮件功能。
:-)
嗨,您的两个页面代码中的好友看起来都很好。 但没有关系。
您的html表单没有表单标签就不会提交。 验证代码文件未在html页面中调用。 刷新页面后,邮件自动发送。
请检查此链接,这对您有帮助。.http ://www.formget.com/jquery-login-form/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.