thinkphp6短信或者邮箱验证码防刷代码
作者:互联网
//发送邮箱验证码
public function sendEmailCode(Request $request)
{
//接收参数
$params = $request->param();
//表单验证
try {
validate([
// 'captcha|验证码' => 'require|captcha',
'route|空间路由地址' => 'require|regex:/^(?!-)((?!--)[0-9a-zA-Z-]){1,39}(?<!-)$/|unique:user|token',
'email|邮箱' => 'require|email|unique:user',
'password|密码' => 'require|min:6|max:18'
], [
'route.regex' => "个人空间地址只能为包含字母、数字、或单个连字符(-),且不能以连字符开头或结尾的最大长度为39位的地址",
])->check($params);
} catch (ValidateException $e) {
return fail($e->getError());
}
//验证方式一.限制1分钟内不能重复发送
// $last_time = cache("register_email_time_" . $params['email']);
// $countdown = 60;
// $fds = time() - $last_time;
// if ($fds < $countdown) {
// return fail('发送频繁,请 ' . ($countdown - $fds) . ' 秒稍后重试~');
// }
//验证方式二:限制ip每天只能发送3次
$send_times = cache("register_ip_" . $request->ip());
if ($send_times > 2) {
return fail('请24小时后再次尝试!22');
}
//验证方式三:限制手机号/邮箱每天只能发送3次短信
$send_times = cache("register_times_" . $params['email']);
if ($send_times > 2) {
return fail('请24小时后再次尝试!33');
}
//发送验证码
$code = mt_rand(100000, 999999);
$body = $code . " 是你的邮箱注册激活码";
if (sendmail($params['email'], '标签:防刷,register,验证码,thinkphp6,发送,params,times,email
来源: https://www.cnblogs.com/lujiahao/p/15743153.html