filter_var($ email,FILTER_VALIDATE_EMAIL)在if条件下无效

时间:2017-02-15 16:49:03

标签: php email email-validation

我正在验证电子邮件using-filter_var($ email,FILTER_VALIDATE_EMAIL)。 我想回应一句话,说'无效的电子邮件'如果上面的函数返回false。但无论if-statement'无效的电子邮件'从页面加载开始时在屏幕上回显。救命。

这是我的代码:

<?php $emailErr = ""; ?>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<ul class="form-style-1">
<li>
<label for="email">Email</label>
<input placeholder="Email*" type="email" name="email" id="email" required>
</li>
<?php 
if(filter_var($email, FILTER_VALIDATE_EMAIL) == false){
$emailErr = "Invalid email.";
echo $emailErr;}?>
</ul>
</form>

1 个答案:

答案 0 :(得分:1)

在验证电子邮件之前,您似乎没有检查是否设置了$email。如果为空字符串或null不是有效的电子邮件,则测试失败并显示消息invalid email

你应该用这个:

if(!empty($email) && filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
    $emailErr = "Invalid email.";
    echo $emailErr;
}