前言
设置的注册有送流量和天数,然后就发现有些人使用临时邮箱注册薅羊毛,自然就想到了设置白/黑名单来放行/拦截特定的邮箱后缀。虽然人家可以注册一些常见的邮箱继续薅,但总归是提高了他们薅羊毛所花费的时间成本了是不是(
思路
通过翻阅源代码我们可以定位到检查邮箱地址是否合法(规范的意思)的文件在网站根目录/app/Utils/Check.php
。关于php
的filter_var()
函数具体详见这里和这里。那么放行/拦截自然要在这里做文章
public static function isEmailLegal($email) { if (filter_var($email, FILTER_VALIDATE_EMAIL)) { return true; } } else { return false; } }
步骤
建立黑白名单。白名单:
qq.com,vip.qq.com,gmail.com,outlook.com,hotmail.com,126.com,139.com,163.com,sina.cn,sina.com,sohu.com
黑名单,常见临时邮箱:
sawoe.com,chacuo.net,027168.com
然后创建一个数组
$whitelist = array("qq.com", "vip.qq.com", "gmail.com", "outlook.com", "hotmail.com", "126.com", "139.com", "163.com", "sina.cn", "sina.com", "sohu.com"); #白名单 $blocklist = array("sawoe.com", "chacuo.net", "027168.com"); #黑名单
获取邮箱后缀
$Mailbox_Suffix = explode('@', $email)[1]; #获取邮箱后缀
根据需要配置规则。白名单机制:邮箱后缀在白名单则放行,规则如下
if(in_array("$Mailbox_Suffix",$whitelist)){ return true; }
示例配置如下
黑名单机制:邮箱后缀不在黑名单则放行,规则如下
if(!in_array("$Mailbox_Suffix",$blocklist)){ return true; }
示例配置如下
然后改提示语。编辑网站根目录/app/Controllers/AuthController.php
文件,改一下200
行和228
行的提示语。我的是
$res['msg'] = "邮箱无效。您可能填入了不规范的邮箱地址,或是使用了不被允许的临时邮箱。";
然后自己打开浏览器的隐身模式,访问自己的站点,随便编一个邮箱前缀和后缀,然后尝试注册,看看是否符合你设置的白/黑名单拦截规则
发表回复