<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; }
}
}