千家信息网

利用PHP自带方法验证邮箱是否存在

发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,这篇文章主要介绍"利用PHP自带方法验证邮箱是否存在",在日常操作中,相信很多人在利用PHP自带方法验证邮箱是否存在问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"利用P
千家信息网最后更新 2024年11月14日利用PHP自带方法验证邮箱是否存在

这篇文章主要介绍"利用PHP自带方法验证邮箱是否存在",在日常操作中,相信很多人在利用PHP自带方法验证邮箱是否存在问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"利用PHP自带方法验证邮箱是否存在"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

filter_var

filter_var是PHP内置的一个变量过滤的方法, 提供了很多实用的过滤器, 可以用来校验整数、浮点数、邮箱、URL、MAC地址等。

filter_var如果返回false, 说明变量无法通过过滤器, 也就是不合法了。

$email = "lastchiliarch@163.com"; var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));  $email = "asb";var_dump(filter_var($email, FILTER_VALIDATE_EMAIL)); $email = "1@a.com";var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));

输出:

string(21) "lastchiliarch@163.com"bool(false)string(7) 1@a.com

对于asb这种非法邮箱格式返回了false, 但对于1@a.com则通过了,还是略有瑕疵啊。

不过一般的正则也通过会认为1@a.com是一个合法的邮箱, 那有啥办法可以更精准的验证呢?

checkdnsrr

checkdnsrr其实是用来查询指定的主机的DNS记录的,我们可以借用它来验证邮箱是否存在。

对于1@a.com肯定是MX记录不存在的。

$email = "lastchiliarch@163.com";  var_dump(checkdnsrr(array_pop(explode("@",$email)),"MX"));  $email = "1@a.com";  var_dump(checkdnsrr(array_pop(explode("@",$email)),"MX"));

输出:

  bool(true)  bool(false)

可以看到, 很完美, 唯一的缺点就是太慢了, 毕竟是要做一次网络请求。 所以不适合同步对大量的邮箱采用这种做法去校验。

filter_var+checkdnsrr

我们可以接合filter_var 和checkdnsrr做校验, 对于绝大多数的非法邮箱肯定会在filter_var的时候就挂掉了, 剩下的再用

checkdnsrr进一步判断。

$email_arr = array("lastchiliarch@163.com", "1@a.com");  foreach($email_arr as $email) {    if (filter_var($email) === false) {      echo "invalid email: $email \n";      continue;    }     if(checkdnsrr(array_pop(explode("@",$email)),"MX") === false) {      echo "invalid email: $email \n";      continue;    }  }

输出:

invalid email: 1@a.com

但要注意的是, 由于只是检查MX记录, 所以只能判断163.com是存在的, 但不能说明lastchiliarch这个用户是存在的。

想要更精确的判断邮箱存在, 那只能连接到smtp服务器去验证了。

介绍了邮箱验证,PHP自带方法如何验证邮箱、URL、IP是否合法,下面为大家介绍:

主要还是使用的是filter_var函数

语法
filter_var(variable, filter, options)
variable 必需。规定要过滤的变量。
filter 可选。规定要使用的过滤器的 ID。
options 规定包含标志/选项的数组。检查每个过滤器可能的标志和选项。

PHP Filters

Example #1 A filter_var() example

以上例程会输出:

string(15) "bob@example.com"bool(false)

到此,关于"利用PHP自带方法验证邮箱是否存在"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

邮箱 验证 方法 过滤器 学习 输出 变量 合法 实用 更多 标志 还是 帮助 检查 肯定 精准 精确 接下来 主机 也就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 工业控制网络技术应用 在万方数据库打印论文检索 iphone13连不上服务器 大学生网络安全知识教育竞赛 关于软件开发的评估方案 青鸟网络技术学校怎么样 携程旅游网络技术上海闵行 销售实时数据库软件价格 想学习网络技术怎么办 2019河南网络安全宣传周 关于网络安全的知识都有哪些 河南高云网络技术公司 网络安全社区讲座目的 游戏登录器什么软件开发 直招高新软件开发 惠普服务器主板图片 管家婆sql数据库导入原数据 idea 远程调试服务器代码 验证码识别数据库 服务器小盘装大盘托架 石化行业网络安全管理平台 从服务器下载文件到本地下载失败 北京中广互动网络技术有限公司 铁路计算机网络技术是干啥的 网络安全领域面对的挑战 科技指数和互联网指数的区别 数据库同步Excel 中药专利数据库 服务器电源灯闪 街道网络安全事件应对办法
0