【发布时间】:2017-01-05 22:06:22
【问题描述】:
我正在尝试使用 filter_var 使电子邮件通过验证。但是,如果电子邮件无效,我不确定如何阻止脚本将表单数据处理到我的数据库中。
我有
$email = $_POST['email'];
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
echo("$email is a valid email address");
} else {
echo("$email is not a valid email address");
exit();
}
电子邮件显然来自用户输入的内容,并且位于 $_POST 变量中。该脚本确实将电子邮件显示为有效或无效,但它仍会处理脚本并将表单数据放入我的数据库中。我认为放置“exit()”将是解决这个问题的方法,或者是在它无效时处理的正确方法。它只是打开一个显示回显打印的新页面。
我错过了什么或做错了什么?理想情况下,我希望表单字段突出显示并给用户一些指示,表明他们输入了格式不正确的电子邮件地址(尽管我知道这是一个不同的主题,有点花里胡哨的东西),但我当然会不想让脚本将数据处理到我的数据库中。
【问题讨论】:
-
您要过滤两次?摆脱脚本的第二行
-
你的条件是
if(false === false) -
双重否定令人困惑,但我想我现在明白了。它位于 W3Schools w3schools.com/php/filter_validate_email.asp 的示例代码中
-
我不明白。我从 W3Schools 那里得到了那个脚本(我知道它的代表不好),我不明白为什么它会是 !filter_var。但我已经把它拿出来(第二行),它仍然回显“不是有效的电子邮件地址”,但它仍然将数据放入数据库中。如果它不是有效的(格式正确的)电子邮件地址,我该如何防止它这样做?我还更新了问题中的代码。
-
你没有向我们展示你的数据库代码。
标签: php filter-var