通用代码:发送短信并显示倒计时

<input type="button" value="发送短信验证码" id="btnReSend" />
<script type="text/javascript">
	var wait =120;
	var setSecID = "";
	function countDown() {
		wait = wait - 1;
		if (wait == 0) {
			clearInterval(setSecID);
			SetBtnState("#btnReSend", true, "重新获取验证码"); 
		} else {
			SetBtnState("#btnReSend", false, wait + "秒后重新获取");
		}
	}

	$(function () {
		if ($("#btnReSend").val() == "60秒后重新获取") {
			setSecID = setInterval("countDown();", 1000);
		}
		$("#btnReSend").click(function () {
			var phone = $("#txtValidCode").val();
			if (!(/^1\d{10}$/.test(phone))) {
				alert("对不起,手机号码格式不正确");
				return;
			}
			SetBtnState("#btnReSend", false, "处理中,请稍候");
			$.ajax({
				url: "doBackStage/AddAccount.ashx",
				dataType: "json",
				data: {
					action: "sendSMS",
					phone: phone
				},
				success: function (res) {
					if (res) {
						clearInterval(setSecID);
						wait = 120;
						setSecID = setInterval("countDown();", 1000);
						alert("已向您手机发送注册验证码,请注意查收");
					} else {
						alert(res);
					}
				}
			});
		});

	});
	function SetBtnState(btn, isEnable, text) {
		if (isEnable) {
			$(btn).removeAttr("disabled").val(text);
		} else {
			$(btn).attr({ "disabled": "disabled" }).val(text);
		}
	}
</script>

后台:

<%@ WebHandler Language="C#" Class="AddAccount" %>

using System;
using System.Data;
using System.Data.SqlClient;
using System.Text.RegularExpressions;
using System.Web;
using BLL.Common;
using DAL.Access;

public class AddAccount : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        var action = context.Request.QueryString["action"];
        switch (action)
        {
            case "sendSMS":
                var phone = context.Request.QueryString["phone"];

                #region 第一步:验证号码格式

                if (!new Regex(@"^1\d{10}$", RegexOptions.IgnoreCase | RegexOptions.Compiled).IsMatch(phone))
                {
                    context.Response.Clear();
                    context.Response.Write("对不起,手机号码格式不正确");
                    context.Response.End();
                }

                #endregion

                #region 第二步:判断是否已经发送过

                SqlParameter[] parameters =
                {
                    new SqlParameter("@phone", SqlDbType.VarChar, 15)
                };
                parameters[0].Value = phone;
                var regLog = SqlHelper.GetDataTable(@"
                                        SELECT top 1 datediff(s,getdate(),regtime)+120,id 
                                        FROM UnitReg 
                                        WHERE regAccount = @phone and regtime > dateadd(s,-120,getdate())", parameters,
                    "U");
                if (regLog.Rows.Count > 0)
                {
                    context.Response.Clear();
                    context.Response.Write("已向您的手机发送了一条验证短信,请注意查收," + regLog.Rows[0][0] + "秒后可以重新获取");
                    context.Response.End();
                }

                #endregion

                #region 第三步:发送短信

                var random = new Random().Next(100000, 999999).ToString();
                SqlParameter[] parms =
                {
                    new SqlParameter("@phone", SqlDbType.VarChar, 15),
                    new SqlParameter("@verifycode", SqlDbType.VarChar, 10),
                    new SqlParameter("@regip", SqlDbType.VarChar, 15)
                };
                parms[0].Value = phone;
                parms[1].Value = random;
                parms[2].Value = Validator.GetClientIP().Trim();
                var sql = @"INSERT INTO 
                                UnitReg ([regType],[regAccount],[verifycode],[regip],[regtime],[flag]) 
                                VALUES ('手机', @phone, @verifycode, @regip,getdate(),'0');SELECT SCOPE_IDENTITY() AS NewID";
                SqlHelper.ExSql(sql, parms, "U");
                SendSMS.Send(phone, string.Format("验证码为{0},您正在注册成都人才网单位用户,需要进行手机验证", random));

                #endregion

                context.Response.Clear();
                context.Response.Write("true");
                context.Response.End();
                break;
        }
    }

    public bool IsReusable
    {
        get { return false; }
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值