【问题标题】:filter_var($email, FILTER_VALIDATE_EMAIL) not working in if conditionfilter_var($email, FILTER_VALIDATE_EMAIL) 在 if 条件下不起作用
【发布时间】:2017-07-04 11:13:40
【问题描述】:

我正在使用 - filter_var($email, FILTER_VALIDATE_EMAIL) 验证电子邮件。 如果上述函数返回 false,我想回应一个声明“无效的电子邮件”。但是,无论 if 语句如何,“无效电子邮件”从页面加载开始就在屏幕上回显。帮助。

这是我的代码:

<?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>

【问题讨论】:

  • 你在哪里创建$email?
  • 这个问题发生在我身上,但我相信我把filter_vars()

标签: php email email-validation


【解决方案1】:

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

你应该使用这个:

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

【讨论】:

  • 在用户提交电子邮件之前,$email 包含值null,因此函数filter_var 将尝试将null 验证为电子邮件。这将失败,因为 null 无效,这就是显示错误消息的原因。在尝试验证内容之前,您必须检查 var $email 是否包含某些内容。这是通过函数empty 完成的
猜你喜欢
  • 2016-03-11
  • 2011-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-18
  • 2011-04-12
  • 1970-01-01
相关资源
最近更新 更多