`
hudeyong926
  • 浏览: 2028261 次
  • 来自: 武汉
社区版块
存档分类
最新评论

倒计时 心跳检测

阅读更多

 最近在写短信发送验证码,就写了个JS倒计时发送验证码按钮

<script language="javascript" src="jquery-1.7.1.min.js"></script>
<input type="button" id="btn" value="获取验证码"/>
<script type="text/javascript">
    var wait = resetWait = 60;
    function timer(t) {
        if (wait == 0) {
            t.removeAttribute("disabled");
            t.value = "获取验证码";
            wait = resetWait;
        } else {
            t.setAttribute("disabled", true);
            t.value = "重新发送(" + wait + ")";
            wait--;
            setTimeout(function(){ timer(t) }, 1000);
        }
    }
    $("#btn").click(function () {
        timer(this);
        sendSMS(mobile, sendType);
    });
      
    function sendSMS(mobile, sendType){
        $.ajax({
            type: 'POST',
            url: '/verify/index',
            data: {mobile: mobile, type: sendType},
            success: function () {
            }
        });
    }
</script>

 PC端支付二维码,通过手机扫码支付成功,PC端跳转到支付成功页面,需要定时心跳检测支付状态

<script type="text/javascript">
    var wait = resetWait = 3;
    timer();
    function timer() {
        if (wait == 0) {
            wait = resetWait;
            checkChanged();
        } else {
            wait--;
        }
        setTimeout(function(){ timer() }, 1000);
    }

    function checkChanged() {
        $.ajax({
            type: 'POST',
            url: '/verify/index',
            datatype:'json',
            success: function (data) {
                if (data.status == 1) { 
                    window.location.href = 'http://www.baidu.com';
                }
            }
        });
    }
</script>

 短信表设计

$content ="您的短信验证码:461930,30分钟有效,请尽快完成验证,请妥善保存,勿泄露!";
CREATE TABLE `sms_verify` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `mobile` varchar(20) NOT NULL COMMENT '手机号',
  `verify_code` varchar(6) NOT NULL COMMENT '验证码数字',
  `user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户id',
  `type` smallint(2) NOT NULL DEFAULT '0' COMMENT '0注册 1忘记密码 2登录 10修改密码',
  `create_time` int(10) NOT NULL DEFAULT '0' COMMENT '创建时间',
  `update_time` int(10) NOT NULL DEFAULT '0' COMMENT '使用时间',
  `expire_time` int(10) NOT NULL DEFAULT '0' COMMENT '失效时间',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;

当给注册手机发送一个验证码之后,该手机以前其他的没有过期的注册验证码都设置成过期。

后端60秒内只能发一次的验证(防止恶意消耗短信),过期验证,手机号验证等。

//发送短信验证码
public function addVerifyInfo($mobile, $verify_code, $type, $user_id = 0) {
    //todo 发码把之前的设为过期
    $this->where(['mobile' => $mobile, 'type' => $type, 'user_id' => $user_id, 'expire_time' => 0, 'update_time' => 0])->data(['expire_time' => time()])->save();

    $id = $this->data(['mobile' => $mobile, 'type' => $type, 'verify_code' => $verify_code, 'user_id' => $user_id])->add();
    //todo send sms to mobile
    $id && D("Message", "Logic")->smsVerifyCode($mobile, $verify_code);
}

//短信验证码否过期
public function checkVerifyNotExpired($mobile, $verify_code, $type, $expire_time, $user_id = 0) {
    return $this->where(['mobile' => $mobile, 'type' => $type, 'verify_code' => $verify_code, 'user_id' => $user_id, 'create_time' => ['egt', $expire_time]])->find();
}

//超过60秒能发短信
public function canSendVerifyOverSeconds($mobile, $type, $user_id = 0, $seconds = 60) {
    $createtime_stamp = $this->where(['mobile' => $mobile, 'type' => $type, 'user_id' => $user_id])->order('create_time desc')->getField('create_time');
    return $createtime_stamp < (time() - $seconds);
}

 

 
 
 
 
 
 
 
 
 
分享到:
评论

相关推荐

    html5 canvas 2016年七夕情人节倒计时代码

    在这个特定的案例中,我们讨论的是2016年七夕情人节的倒计时代码,这是一个利用Canvas API实现的特殊时钟应用。 首先,我们需要了解HTML5 Canvas的基本结构。在HTML中,`&lt;canvas&gt;`标签定义了一个画布,开发者可以...

    android 计时器

    在Android应用中,计时器常用于倒计时、心跳检测、自动刷新数据等场景。例如,在游戏应用中,可以使用计时器实现定时刷新游戏状态;在聊天应用中,可以设置心跳检测保持连接状态;在新闻阅读应用中,可以设定自动...

    jQuery浪漫的结婚倒计时页面代码

    【jQuery浪漫结婚倒计时页面代码详解】 在网页设计中,倒计时功能常常用于创建紧张、期待或浪漫的氛围,比如在结婚庆典这样的特殊场合。这个“jQuery浪漫的结婚倒计时页面代码”就是一个很好的例子,它为即将举行的...

    ios计时器NSTimer的使用

    在iOS开发中,`NSTimer` ...理解并熟练运用`NSTimer`对于iOS开发中的各种定时需求至关重要,无论是倒计时、心跳检测还是UI刷新,`NSTimer`都是一个实用的工具。通过实践和调试,你可以更好地掌握其工作原理和使用技巧。

    VC 计时器相关应用 附代码.rar

    此外,还可以结合其他UI元素和业务逻辑,实现更丰富的功能,如倒计时、心跳检测等。 总之,这个压缩包中的代码实例是一个基础的VC++计时器应用,对于初学者来说,可以作为学习MFC计时器使用的起点,通过阅读和运行...

    Volume 3 :Chapter 23. 计时器1

    这在需要持续监控时间流逝的场景中非常实用,比如系统心跳检测。 3. **用户定义的计数模式**:计时器允许用户自定义计数模式,例如递增或递减计数,以及不同频率的计数。这种灵活性使得计时器可以适应各种不同的...

    C# 计时器教程.rar

    在实际开发中,计时器常常用于实现如心跳检测、定时刷新数据、倒计时等功能。理解并熟练掌握C#计时器的使用,能极大地提高代码的灵活性和效率。 通过学习本教程提供的"第02章课件(完整版)-计时器",你可以进一步...

    spring + websocket demo

    这可能涉及到JavaScript的定时器来检查客户端活动,并在检测到会话即将过期时触发WebSocket连接向服务器发送心跳,服务器则返回一个确认消息,或者在没有收到心跳时关闭连接并触发遮罩层。 7. **WebSocket的使用...

    xintiao.rar_多线程 定时器

    它们广泛应用于各种场景,如定时任务执行、超时检测、倒计时等。在Python中,可以使用`threading.Timer`类来创建定时器;在Java中,有`java.util.Timer`和`java.util.concurrent.ScheduledExecutorService`等实现。...

    timer的视频教程

    4. **实例应用**:教程中的实例可能涵盖了如何创建一个简单的计时器,例如倒计时、心跳检测、定时提醒等。通过设置合适的`Interval`和处理`Tick`事件,你可以实现各种定时功能。 5. **多线程考虑**:在使用`System....

    c# Timers简单的定时应用

    通过理解和掌握C#中的`Timers`,你可以创建各种基于时间的逻辑,例如定期备份、心跳检测、倒计时等,极大地丰富了你的应用程序功能。在实际项目中,灵活运用这些定时器类,能够提高代码的可维护性和可扩展性。

    js页面显示多个定时器

    以下示例展示了如何创建两个独立的定时器,分别显示倒计时和心跳动画: ```html &lt;div id="timer1"&gt;0 &lt;div id="timer2"&gt;Loading... ``` ```javascript function startCountdown() { var countdown = 10; ...

    nodecg-timetools-bundle

    3. **实时反馈系统**:在多人在线游戏中,可以设定定时发送心跳包,检测服务器连接状态,及时向玩家反馈网络状况。 四、总结 `nodecg-timetools-bundle`作为NodeCG生态中的重要组件,其提供的高效时间管理工具对...

    数电课程设计报告题目汇总.doc

    - **提高要求**:改进走时精度,增加日期显示,实现倒计时和整点报时,以及定时功能。 3. **电平感觉检测仪** - **基本要求**:使用光电式摇晃传感器,通过脉冲计数来测量人体平衡感,测试时长1分钟。 4. **便携...

    ttimer:基于刻度的计时器(分层定时轮算法)

    4. **游戏服务器**: 游戏中的各种定时事件,如冷却时间、倒计时等。 综上所述,ttimer库通过分层定时轮算法实现了高效的定时任务管理,对于需要处理大量并发定时事件的系统来说,它是一个值得考虑的选择。其设计...

    QQForm.rar

    在QQForm中,timer控件可能被用来实现定时器功能,例如倒计时、心跳检测或者定期刷新界面信息。 对于C#初学者来说,学习编写代码的风格也是非常重要的。代码风格不仅影响程序的可读性和可维护性,还反映了编程者的...

    1s定时器 - 万年历文件

    1秒定时器的应用广泛,如倒计时、数据刷新、心跳检测等。 万年历,正如其名,是能够显示至少几千年日期的系统,涵盖了公历、农历等多种日历类型。在编程中实现万年历需要处理复杂的日期计算,包括闰年规则、月份...

    56293966801079817-定时器实验.zip

    在应用程序中,定时器常用于实现倒计时、定期执行某项操作(如轮询、心跳检测)等功能。定时器可以分为硬件定时器和软件定时器,硬件定时器通常由芯片提供,与CPU紧密相连,而软件定时器则是通过软件算法模拟的定时...

    DOM基础知识(五)

    总的来说,理解JavaScript中的Date对象和定时器是开发Web应用时不可或缺的基础知识,它们在各种场景中都有广泛的应用,如计时器、倒计时、心跳检测等。通过深入学习和实践,我们可以更好地利用这些工具来创建高效、...

    定时器方案 红黑树 时间轮 最小堆1

    首先,定时器的主要作用是调度任务,比如心跳检测、技能冷却、倒计时等,这些都需要一个精确的超时机制来实现。在服务端编程中,通常有两种处理网络事件和时间事件的方式:一种是将它们放在同一个线程中处理,如...

Global site tag (gtag.js) - Google Analytics