php电子邮件验证功能不会得到处理



我已经编写了一些代码来创建联系人表单,但我试图验证电子邮件字段,当我使用错误电子邮件的伪数据进行测试时,我使用的函数(filter_var($email,filter_validate_email((不会得到处理。我把我所有的php和html代码都添加到一个文件中,这样可读性更高,不会使事情复杂化。

这是我的完整代码:

<?php 
// define variables and set to empty values
$first_nameErr = $last_nameErr = $emailErr = $messageErr  = "";
$first_name = $last_name = $email = $from = "";
if($_SERVER["REQUEST_METHOD"] == "POST"){
$to = "pdgcaracas@gmail.com"; // this is your Email address
// this is the sender's Email address
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$from = $_POST['email'];
$subject = "Form submission";
$subject2 = "Copy of your form submission";
$message = $first_name . " " . $last_name . " wrote the following:" . "nn" . $_POST['message'];
$message2 = "Here is a copy of your message " . $first_name . "nn" . $_POST['message'];
$headers = "From:" . $from;
$headers2 = "From:" . $to;
if (empty($_POST["first_name"])){
$first_nameErr = " First name is required";
}
else if ((!preg_match("/^[a-zA-Z-' ]*$/",$first_name))) {
$first_nameErr = "Please type in only letters and whitespace";
}
else if(empty($_POST["last_name"])){
$last_nameErr = " Last name is required";
}
else if ((!preg_match("/^[a-zA-Z-' ]*$/",$last_name))) {
$last_nameErr = "Please type in only letters and whitespace";
}
else if (empty($_POST["email"])) {
$emailErr = "Email is required";
}
else if (filter_var($email, FILTER_VALIDATE_EMAIL)) { 
$emailErr = "Email is invalid";
}
else if (empty($_POST["message"])) {
$messageErr = "message is required";
}
else {
mail($to,$subject,$message,$headers);
mail($from,$subject2,$message2,$headers2); // sends a copy of the message to the sender
echo '<script>alert("Mail Sent. Thank you , we will contact you shortly.")</script>';
}
// You can also use header('Location: thank_you.php'); to redirect to another page.
}
?>
<!DOCTYPE HTML>
<!--
Industrious by TEMPLATED
templated.co @templatedco
Released for free under the Creative Commons Attribution 3.0 license (templated.co/license)
-->
<html>
<head>
<title>Generic Page - Industrious by TEMPLATED</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<meta name="description" content="" />
<meta name="keywords" content="" />
<link rel="stylesheet" href="assets/css/main.css" />
</head>
<body class="is-preload">
<!-- Header -->
<header id="header">
<a class="logo" href="index.html">Test</a>
<nav>
<a href="#menu">Menu</a>
</nav>
</header>
<!-- Nav -->
<nav id="menu">
<ul class="links">
<li><a href="index.html">Home</a></li>
<li><a href="elements.html">Elements</a></li>
<li><a href="aboutme.html">About me</a></li>
</ul>
</nav>
<!-- Heading -->
<div id="heading" >
<h1>Contact Us</h1>
</div>
<!-- Main -->
<section id="main" class="wrapper">
<div class="inner">
<div class="content">
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
First Name: <input type="text" name="first_name">
<span class="error">* <?php echo $first_nameErr;?></span>
<br>
Last Name: <input type="text" name="last_name">
<span class="error">* <?php echo $last_nameErr;?></span><br>
Email: <input type="text" name="email">
<span class="error">* <?php echo $emailErr;?></span><br>
Message:<br><textarea rows="5" name="message" cols="30"></textarea>
<span class="error">* <?php echo $messageErr;?></span><br><br>
<input type="submit" name="submit" value="Submit">


</form>
</div>
</div>
</section>
<!-- Footer -->
<footer id="footer">
<div class="inner">
<div class="content">
<section>
<h3>Accumsan montes viverra</h3>
<p>Nunc lacinia ante nunc ac lobortis. Interdum adipiscing gravida odio porttitor sem non mi integer non faucibus ornare mi ut ante amet placerat aliquet. Volutpat eu sed ante lacinia sapien lorem accumsan varius montes viverra nibh in adipiscing. Lorem ipsum dolor vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing sed feugiat eu faucibus. Integer ac sed amet praesent. Nunc lacinia ante nunc ac gravida.</p>
</section>
<section>
<h4>Sem turpis amet semper</h4>
<ul class="alt">
<li><a href="#">Dolor pulvinar sed etiam.</a></li>
<li><a href="#">Etiam vel lorem sed amet.</a></li>
<li><a href="#">Felis enim feugiat viverra.</a></li>
<li><a href="#">Dolor pulvinar magna etiam.</a></li>
</ul>
</section>
<section>
<h4>Magna sed ipsum</h4>
<ul class="plain">
<li><a href="#"><i class="icon fa-twitter">&nbsp;</i>Twitter</a></li>
<li><a href="#"><i class="icon fa-facebook">&nbsp;</i>Facebook</a></li>
<li><a href="#"><i class="icon fa-instagram">&nbsp;</i>Instagram</a></li>
<li><a href="#"><i class="icon fa-github">&nbsp;</i>Github</a></li>
</ul>
</section>
</div>
<div class="copyright">
&copy; Untitled. Photos <a href="https://unsplash.co">Unsplash</a>, Video <a href="https://coverr.co">Coverr</a>.
</div>
</div>
</footer>
<!-- Scripts -->
<script src="assets/js/jquery.min.js"></script>
<script src="assets/js/browser.min.js"></script>
<script src="assets/js/breakpoints.min.js"></script>
<script src="assets/js/util.js"></script>
<script src="assets/js/main.js"></script>
</body>
</html>

filter_var只有在提供的$email有效时才返回true。要检查电子邮件是否无效,请按以下方式更改filter_var的if语句,它应该可以在中工作

//your code
if (!(filter_var($email, FILTER_VALIDATE_EMAIL))) { 
$emailErr = "Email is invalid";
}
//your code

最新更新