PHP限制发送验证码条数(防止重复发送)

1.场景:通常在使用手机号注册时需要发送短信验证码,在修改密码等敏感操作时也需要验证手机号发送短信验证码。

短信验证码的目的:验证用户的身份是否本人

在项目代码中发送短信,通常要调用第三方短信商的短信发送接口。

提供短信接口的平台:百度Apistore数据平台、聚合数据平台、京东万象、短信宝等等

一般情况下,短信接口需要企业认证用户才能申请、一般都是收费的。

以短信宝为例:个人可以购买使用

javascript:

//验证手机号
$(‘#dyMobileButton’).click(function(){
var mobile = $(‘#phone’).val();
var preg = /^1[3589]\d{9}$/;
if (mobile == ‘’ || !preg.test(mobile)){
$(‘.error:eq(0)’).html(‘手机格式不正确’);
}else{
$(‘.error:eq(0)’).empty();
}
//倒计时
var that = $(this);
that.attr(‘disabled’,true);//点击过后不能再次点击
//60s之后才能再次发送
var second = 60;
var timer = setInterval(function () {
second –
if (second > 0){
that.text(second + ‘s后再次发送’)
}else{
that.text(‘发送验证码’)
that.attr(‘disabled’,false);//打开点击功能
clearInterval(timer);//清空定时器
}
},1000);

    $send_time = cache('time_key');
    //判断是否发送过
    if ($send_time && time() - $send_time < 60){
        throw new Exception('请求的次数过多');
    }
});

//存储发送成功次数
$times_key = ‘times’.$mobile;
//获取今天的发送次数
$times = Cache::get($times_key) ? :0;
if ($times > 3){
throw new Exception(‘今天发送次数过多’);
}
//发送后次数加1
$times = $times + 1;
Cache::set($times_key,$times,30);

禁用按钮

//禁用按钮
var that = $(this);
that.attr(‘disabled’,’disabled’);
var seconds = 60;
seconds–;
var timer = setInterval(function () {
if (seconds > 0){
that.text(seconds + “秒后重试”);
seconds–;
}else{
clearInterval(timer);
that.text(‘发送验证码’);
that.removeAttr(‘disabled’);
}
},1000)

本作品采用《CC 协议》,转载必须注明作者和本文链接
陈卿诺语
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!