php邮箱有效性验证,PHP验证邮箱有效性验证邮箱后缀域名是否真实存在的方法(过滤+DNS验证)...
PHP检验邮箱有效性的方法其实可以很简单,用到内部函数就行,连正则都可以不用写。
首先是filter_var函数
filter_var是PHP内置的一个变量过滤的方法, 提供了很多实用的过滤器, 可以用来校验整数、浮点数、邮箱、URL、MAC地址等。
filter_var如果返回false, 说明变量无法通过过滤器, 也就是不合法了。
$email = "bnxb.com@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) "bnxb.com@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 = "bnxb.com@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)
可以看到, 很完美,但缺点就是太慢了,毕竟是要请求一次DNS记录。 所以不适合对大量的邮箱采用这种做法去校验。
filter_var+checkdnsrr结合方案
我们可以结合filter_var 和checkdnsrr做校验, 对于绝大多数的非法邮箱在filter_var的时候就被排除了, 剩下的再用checkdnsrr进一步判断。
$email_arr = array("bnxb.com@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确实是有提供邮箱, 但不能说明bnxb.com这个用户是存在的。
想要更精确的判断邮箱存在, 那只能连接到smtp服务器去验证了。
下面附上函数说明:
filter_var函数
语法filter_var(variable, filter, options)variable 必需。规定要过滤的变量。filter 可选。规定要使用的过滤器的 ID。options 规定包含标志/选项的数组。检查每个过滤器可能的标志和选项。
PHP Filters
Example #1 A filter_var() example
var_dump(filter_var('bob@example.com', FILTER_VALIDATE_EMAIL));
var_dump(filter_var('http://example.com', FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED));
?>
以上例程会输出:
string(15) "bob@example.com"
bool(false)
php邮箱有效性验证,PHP验证邮箱有效性验证邮箱后缀域名是否真实存在的方法(过滤+DNS验证)...相关推荐
- sql判断邮箱是否合法_如何验证会员系统中用户的邮箱是否真实存在
在开发网站时,我们需要对用户注册的邮箱进行核对与验证,用户填写的邮箱是否有效邮箱. 好吧,我们先从数据库入手,修改用户表让用户有填写email的字段,添加了2个字段: ALTER TABLE [dbo ...
- 亿愿批量验证检测网址链接有效性
亿愿批量验证检测网址链接有效性(yyUrlValidate)-简介 ---最为专业的网址有效性验证工具!具备多线程和代理ip可限次数使用! ---三种技术验证网址有效性,多种有效性定义可以选用! -- ...
- python使用正则表达式验证用户输入密码的有效性
python使用正则表达式验证用户输入密码的有效性 条件: 1,最少有8位 2,字母范围a到z 3,至少有一个字母时大写的 4,至少有一个数字 5,至少有一个特殊字符(_.@.$) #密码验证的条件 ...
- c#基类 常用数据验证的封装,数字,字符,邮箱的验证
摘自:http://www.oschina.net/code/snippet_1242747_23573 #region 常用数据验证的封装,数字字符的验证/// <summary>/// ...
- gmail注册手机号不能用于验证_一个手机号码、辅助邮箱,可以注册绑定多少个gmail帐号?...
点击上方云中栖居关注 ▲ 先说答案,据Google专家回复, 一个手机号码最多绑定10个Google帐号. 之前每当有喜欢的邮箱名称,就会注册一个谷歌邮箱帐号,应该有二十多个了吧,丢弃了一些,目前仅在 ...
- Python验证信用卡号的有效性(算法)(称为Luhn检测或者mod 10 检测)
转载自: https://baijiahao.baidu.com/s?id=1662553267127372613&wfr=spider&for=pc 有修改 一个信用卡号必须是13到 ...
- HTML表单验证(含用户名,密码,邮箱,手机号,验证码-验证)
HTML表单验证(含用户名,密码,邮箱,手机号,验证码) 前几天对表单注册有点感兴趣,于是在课余时间了解了一些注册表单的验证方法,自己也试着做了一个表单的验证(前端验证),很low,各位童鞋应该都看得 ...
- python 代理ip验证_python爬虫成长之路(二):抓取代理IP并多线程验证
上回说到,突破反爬虫限制的方法之一就是多用几个代理IP,但前提是我们得拥有有效的代理IP,下面我们来介绍抓取代理IP并多线程快速验证其有效性的过程. 一.抓取代理IP 提供免费代理IP的网站还挺多的, ...
- mac怎么查看gitlab的注册邮箱_163电子邮箱怎么注册申请?手机号注册电子邮箱的小技巧...
电子邮箱帮助我们实现了无纸化,无需手写信件,通过电脑.手机输入,即可与收件人在网络上进行联系.电子邮箱的兴起,对于人与人之间的沟通和交流,增加了便捷性,促进了社会的发展与进步.目前的邮箱中,TOM的1 ...
最新文章
- 0525 项目回顾7.0
- xshell启动报nssock2_nssock2.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家
- 网络营销再掀波澜,微博独领风骚
- 删除目录下大量小文件和清空大文件
- postDelayed总结
- Uva536 Tree Recovery二叉树重建(先序和中序确定二叉树,后序输出)
- [LCP28] 采购方案
- html cursor居中,CSS cursor属性
- 基于Raspbian(树莓派)搭建web安全练习环境(一)
- 安卓版本客户端2.1
- 人工神经网络分为哪两类,人工神经网络包括哪些
- mysql复制表结构创建新表
- 由三点画圆到未来日记:失控中的位置隐私
- Qt+OpenCV在arm板上运行实现思路
- 影片下载观看秘籍大全
- excel公式编辑器_EXCEL从文件夹中提取符合条件的记录,其实很简单
- L18-python语法基础-数据类型的基本操作(d5)
- 《都挺好》一部黑码农的神剧!
- 基于微信小程序的货物管理系统的设计与实现-计算机毕业设计源码+LW文档
- 一些电子资源的分享(1)
热门文章
- html5退出应用,鬼泣5致命的应用程序退出怎么办 一招帮你解决
- 《TCP/IP网络编程》课后练习答案第一部分1~5章 尹圣雨
- 给广大单身程序员介绍个开源的 “情侣网站”,女神感动到哭,追女神利器,脱单好帮手
- 期货期权小知识(期权期货的区别通俗易懂)
- 《延禧攻略》演员大起底——利用Python+bs+pyecharts分析绘制词云和玫瑰图
- 解剖档案管理系统平台的管理模块介绍
- fastboot刷机以及命令详细解说
- 解决Android Studio运行模拟器报:The emulator process for AVD Pixel_4a_Edited_API_28 has terminated.
- python获取藏头诗内容_用Python作诗,生活仍有诗和远方
- redis(二)基本数据类型