使用filter_var PHP验证电子邮件

时间:2015-06-28 00:20:37

标签: php validation email

我有一个PHP表单来获取用户的姓名和电子邮件。 对于电子邮件字段,我想验证该字段是否已填写且该电子邮件地址是否有效。 我使用下面的代码

验证电子邮件字段是否已填写有效,但不是电子邮件验证。

<tr>
<td align="right">
Email: 
</td><td align="left">
<input type="text" size="25" name="email" value="<? echo $_GET['email']; ? >"/">

<?
#checking if email exists
if ($error_code && !($_GET['email'])) {
echo "<b>Please include your email address.</b>";
}

# validating email
if (!filter_var(($_GET['email']), FILTER_VALIDATE_EMAIL) === true) {
echo "<b>This is not a valid email address.</b>";
}

?>

即使在输入电子邮件地址之前,也会显示消息“这不是有效的电子邮件地址”,如果我输入错误的电子邮件地址并提交表单,则不会显示正确的消息。 有什么问题,为什么在提交值之前验证电子邮件错误?

3 个答案:

答案 0 :(得分:0)

考虑测试isset($_GET['email'])包装所有验证。此外,如果此数据来自表单,请检查您的方法是否真的是GET,否则您想要使用$_POST检查参数。

答案 1 :(得分:0)

试试这个

if (filter_var($_GET['email'], FILTER_VALIDATE_EMAIL) != true) {
     echo "<b>This is not a valid email address.</b>";
}

在发布表单之前看到结果的原因是因为在进行验证之前,您没有检查$_GET数组是否已设置。

所以你可以做点像......

if(isset($_GET['email'])){
    if ($error_code && empty($_GET['email'])) {
        echo "<b>Please include your email address.</b>";
    }

    if (filter_var($_GET['email'], FILTER_VALIDATE_EMAIL) != true) {
        echo "<b>This is not a valid email address.</b>";
    }
}

答案 2 :(得分:0)

试试这个,请告诉我这是否有帮助

<?
#checking if email exists
if ($error_code && !($_GET['email'])) {
echo "<b>Please include your email address.</b>";
}

//# validating email
if (!filter_var($_GET['email'], FILTER_VALIDATE_EMAIL)) {
echo "<b>This is not a valid email address.</b>";
}

?>
相关问题