我应该使用filter_var来验证电子邮件吗?

2022-08-30 17:03:13

我有一个类,在将每个输入发送到数据库层之前对其进行验证。请注意,我的问题不是关于逃避或任何事情。我的数据库层将处理 SQL 注入问题。我想做的就是验证电子邮件是否有效,因为稍后该电子邮件可能会被用作“发送到”。例如,用户将通过发送到电子邮件的链接恢复对其帐户的访问权限。我读了很多关于它的文章,有一群人反对它,另一群人赞成。将重点放在“我只想验证电子邮件,而不是将其过滤为数据库或html或XSS或其他任何内容”上,使用时是否有问题?filter_varfilter_var


答案 1

是的,你应该这样做。

使用标准库验证而不是家庭酿造库验证具有多种好处:

  1. 许多眼球已经看到了您将要使用的代码(嗯,至少两个),希望即使在将其合并到版本之前也具有电子邮件验证方面的经验。
  2. 经过单元测试
  3. 其他人将使用相同的检查并报告错误,您可以在php更新上免费获得这些修复程序。

但是,检查电子邮件地址的格式只是第一道防线,如果您真的想知道它是真的还是假的,则必须向它发送消息。


答案 2

是的,你应该使用,这就是你如何合并它:filter_var

if( filter_var( $email ,FILTER_VALIDATE_EMAIL ) )
{
    /*
     * Rest of your code
     */
}

推荐