1.Ajax请求处理页面:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.SessionState;
using System.Web.Services; namespace Web.User.Ajax
{
/// <summary>
/// SendCheckcode 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class SendCheckcode : IHttpHandler, IRequiresSessionState
{
//发送验证码
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string arrMobile = context.Request.Form["ajaxdata"].ToString();
string[] strMobile = arrMobile.Split(',');
string yzm = new Random().Next().ToString(); context.Session["MobileYzm"] = yzm; //如果是手机号登录
string strReg = @"^((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)";
bool IsMobile = BLL.HSSM_Public.PublicRegex(strReg, arrMobile);
bool b = false; if (IsMobile)
b = BLL.HSSM_Public.SendSMS(strMobile, yzm);
else
{
Model.EmailTabModel etm = new Model.EmailTabModel();
etm.Email = arrMobile;
b = BLL.HSSM_Public.SendEmail(etm, "", ,"邮箱注册验证码","当前注册验证码为:["+yzm+"]", );//发送邮件
} if (b)
context.Response.Write("");
else
context.Response.Write("发送失败!");
} public bool IsReusable
{
get
{
return false;
}
}
}
}
接收通过Jquery的Ajax请求传来的参数,进行处理,此处是接收手机号码还是邮箱地址,然后向这个手机号码或邮箱地址发送短信或邮件验证码

2.填写手机号和验证码:

<div class="Con">
<ul>
<li class="left">输入手机号码:</li><li class="right">
<input id="txtMobile" runat="server" type="text" class="Text"/><input
id="btnGetYzm" runat="server" type="button" class="hyzm" value="获取验证码" /> </li>
</ul>
<ul>
<li class="left">验证码:</li><li class="right">
<input id="txtChkCode" runat="server" type="text" class="Text"/></li>
<li id="liCheckCode" runat="server" class="ts">* 请输入手机收到的验证码。如果一段时间没有收到,请&nbsp;<a
id="aGetChkCodeAgain" style="cursor: pointer;" class="a1">重新获取</a></li>
</ul>
</div>
填写手机号码,验证是否填写正确以及触发发送验证码到该手机的方法,手机接收到验证码后填写进行验证验证码的有效性

3.发送验证码:

$(function () {
$("#btnGetYzm,#aGetChkCodeAgain").bind("click", function () {
if (mobileResult == true) {
/****************************发送验证码到手机************************/
$.ajax({
type: "POST",
url: "../User/Ajax/SendCheckcode.ashx?r=" + Math.random(),
data: { ajaxdata: $("#txtMobile").val() },
async: false,
success: function (msg) {
if (msg != ) {
$("#liCheckCode").html(msg);
$("#liCheckCode").css("color", "red");
result = false;
}
else {
$("#liCheckCode").html("手机号验证通过");
$("#liCheckCode").css("color", "green");
result = true;
}
},
error: function (xhr) {
$("#liCheckCode").html("Error:" + xhr.status + " " + xhr.statusText);
$("#liCheckCode").css("color", "red"); result = false;
}
});
/****************************end************************/
count = ;
GetYzm();
return true;
}
else {
//手机号验证
VerifyCheck($("#txtMobile"), $("#liCheckCode"), "请输入正确的手机号!", /^((\d{})|^((\d{,})|(\d{}|\d{})-(\d{,})|(\d{}|\d{})-(\d{,})-(\d{}|\d{}|\d{}|\d{})|(\d{,})-(\d{}|\d{}|\d{}|\d{}))$)/, "手机号不合法!", "../User/Ajax/ExistsMobile.ashx");
return false;
}
});
页面加载时设置点击"发送验证码"按钮请求Ajax页面,Ajax页面生成验证码发送到手机端,发送之后设置按钮文字时间倒计时效果,如果手机号验证未通过将继续验证,验证通过后才能发送

4.验证手机号和验证码:

var result = false;
var mobileResult = false;
var retMobile = false; //手机号验证是否通过
var retChkCode = false; //填写的手机接收的验证码是否通过
//表单元素验证,txt:要验证的文本值;div:文本验证信息层;divmsg:文本验证消息;
//reg:正则式;regmsg:正则式验证消息;ajaxurl:文本值有效性请求验证页面;divhtml:验证返回消息
function VerifyCheck(txt, div, divmsg, reg, regmsg, ajaxurl) {
if ($.trim(txt.val()) == "") {//判断文本框是否填写
div.html(divmsg);
div.css("color", "red");
return false;
}
else {
if (reg != null && !reg.test(txt.val())) {//判断是否输入合法字符
div.html(regmsg);
div.css("color", "red");
return false;
}
else {
/****************************检查文本输入值是否可用************************/
$.ajax({
type: "POST",
url: ajaxurl + "?r=" + Math.random(),
data: { ajaxdata: txt.val() },
async: false,
success: function (msg) {
if (msg != 0) {
div.html(msg);
div.css("color", "red");
result = false;
}
else {
div.css("color", "green");
if (divmsg == "请输入正确的手机号!") {
mobileResult = true;
}
if (ajaxurl == "../User/Ajax/ExistsMobile.ashx") {
div.html("手机号输入正确");
retMobile = true;
}
if (ajaxurl == "../User/Ajax/ExistsMobileYzm.ashx") {
div.html("验证码输入正确");
retChkCode = true;
} result = true;
}
},
error: function (xhr) {
div.html("Error:" + xhr.status + " " + xhr.statusText);
div.css("color", "red");
result = false;
}
});
return result;
/****************************end************************/
}
}
} //设置发送验证码的按钮的倒计时效果
var count = 30;
function GetYzm() {
$("#btnGetYzm").attr("disabled", "disabled");
$("#btnGetYzm").val(count + "秒之后重新获取")
count--;
if (count > 0) {
setTimeout(GetYzm, 1000);
}
else {
$("#btnGetYzm").val("获取验证码");
$("#btnGetYzm").attr("disabled", false);
}
return result;
}
请求Ajax页面验证手机号和验证码是否输入正确

4.判断手机号格式(是否合法,是否可用):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace Web.User.Ajax
{
/// <summary>
/// ExistsMobile 的摘要说明
/// </summary>
public class ExistsMobile : IHttpHandler
{
//检测手机号是否已经注册
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string Mobile = string.Empty;
if (context.Request.Form["ajaxdata"] == null)
{
context.Response.Write("手机号不能为空!");
return;
}
Mobile = context.Request.Form["ajaxdata"].ToString();
if (!BLL.HSSM_Public.PublicRegex(@"^((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)", Mobile))
{
context.Response.Write("手机号格式非法!");
return;
}
if (BLL.HSSM_Public_DB.IsRecord("Users", string.Format(" Mobile='{0}'", Mobile)))
{
context.Response.Write("该手机号["+Mobile+"]已被注册!");
}
else
{
context.Response.Write("");
}
} public bool IsReusable
{
get
{
return false;
}
}
}
}
检验手机号是否填写,是否合法,是否可用

5.判断验证码格式:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.SessionState;
using System.Web.Services; namespace Web.User.Ajax
{
/// <summary>
/// ExistsMobileYzm 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class ExistsMobileYzm : IHttpHandler, IRequiresSessionState //就是这样显示的实现一下,不用实现什么方法
{
/// <summary>
/// 检测验证码是否输入正确
/// </summary>
/// <param name="context"></param>
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string CheckCode = string.Empty;
string SessionCheckcode = null != context.Session["MobileYzm"] ? context.Session["MobileYzm"].ToString() : string.Empty; if (String.IsNullOrEmpty(SessionCheckcode))
{
context.Response.Write("请您先获取验证码!");
return;
}
if (context.Request.Form["ajaxdata"] == null)
{
context.Response.Write("请输入手机收到的验证码,如果一段时间没有收到,请&nbsp;<a id='aGetChkCodeAgain' href='#' class='a1'>重新获取</a>");
return;
} CheckCode = context.Request.Form["ajaxdata"].ToString(); if (String.IsNullOrEmpty(SessionCheckcode))
context.Response.Write("验证码超时失效!");
else if (CheckCode != SessionCheckcode)
context.Response.Write("验证码输入错误!");
else
context.Response.Write("");
} public bool IsReusable
{
get
{
return false;
}
}
}
}

检验验证码是否填写,是否超时,是否输入正确

转载原文:http://www.cnblogs.com/gawking/p/3518815.html

C# Ajax 手机发送短信验证码 校验验证码 菜鸟级别实现方法的更多相关文章

  1. Java 实现手机发送短信验证码

    Java 实现手机发送短信验证码 采用引入第三方工具的方式,网上查了半天,发现简单的实现方式便是注册一个中国网建的账号,新建账号的时候会附带赠几条免费短信,彩信 ,之后想要在使用就得花钱了.简单的操作 ...

  2. Android之发送短信和接收验证码

      最近项目需求需要发送短信和接收验证码并将验证码显示在输入框中 以下是我的记录    前提---权限     <uses-permission android:name="andro ...

  3. 2.5 使用ARDUINO做主控,手机发送短信控制开关LED

    需要准备的硬件 MC20开发板 1个 https://item.taobao.com/item.htm?id=562661881042 GSM/GPRS天线 1根 https://item.taoba ...

  4. 使用Python往手机发送短信(基于twilio模块)

    官网是https://www.twilio.com twilio的一句话介绍——提供SDK帮你连接世界上所有人,你可以很方便的调用他们提供的接口来给指定手机发短信,打电话. 首先在twilio的官网注 ...

  5. 基于SMS短信平台给手机发送短信

    JAVA发送手机短信,我知道的有三种方式,恰逢项目需求,自己整理了基于SMS的短信发送,其他两种这里就说说一下 使用webservice接口发送手机短信,这个可以使用sina提供的webservice ...

  6. C#实现给手机发送短信

    public static void SendSMS(string FaSongUser, string ToUserList, string ContentStr)    {        //针对 ...

  7. Hbuilder给手机发送短信与拨打电话

    前言:业务场景 需要给手机号码拨打电话与发送短信.html5已经提供接口. methods: { Call: function() { var that = this; if(that.ptel == ...

  8. Java演示手机发送短信验证码功能实现

    我们这里采用阿里大于的短信API 第一步:登陆阿里大于,下载阿里大于的SDK a.在阿里大于上创建自己的应用 b.点击配置管理中的验证码,先添加签名,再配置短信模板 第二步:解压相关SDK,第一个为j ...

  9. c# 调用短信平台接口,给手机发送短信

    项目上要做个发手机短信的功能.网上找找了,用的微米的短信接口. 注册后,获得UID和UID key,C#代码中需要这个 调用代码很简单 ", con = "[微米]您的验证码是:6 ...

随机推荐

  1. hdu 1839 Delay Constrained Maximum Capacity Path 二分/最短路

    Delay Constrained Maximum Capacity Path Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu. ...

  2. (字符串的处理4.7.16)POJ 1159 Palindrome(让一个字符串变成回文串需要插入多少个字符...先逆序,在减去公共子序列的最大长度即可)

    /* * POJ_1159.cpp * * Created on: 2013年10月29日 * Author: Administrator */ #include <iostream> # ...

  3. 分享一组Rpg Marker人物行走,游戏素材图片,共20张图片

    分享一组Rpg Marker人物行走,游戏素材图片,共20张图片 上面的下载地址链接是图片,无法直接复制哦!下载请直接点击: 游戏素材下载  或者复制以下链接:http://***/view/13.h ...

  4. 三星galaxy s4问题解决及快捷操作

    http://blog.csdn.net/pipisorry/article/details/38474827 三星galaxy s4更改锁屏方式时出现故障 屏幕锁定设置除password以外,其它锁 ...

  5. 怎样通过Java程序提交yarn的mapreduce计算任务

    因为项目需求,须要通过Java程序提交Yarn的MapReduce的计算任务.与一般的通过Jar包提交MapReduce任务不同,通过程序提交MapReduce任务须要有点小变动.详见下面代码. 下面 ...

  6. sqlserver2008 复制,镜像,日志传输及故障转移集群区别

    一, 数据库复制 SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份.这里的同步备份指的是备份服务器与主服务器进行 实时数据同步, ...

  7. NSNotificationCenter通知中心

    概述 NSNotificationCenter通知中心,通常用于一对一或者一对多的消息传递,即当一个地方改变时,要求改变其他的一些地方,例如当网络请求回来了新的数据,需要刷新本地信息和本地内存里面的界 ...

  8. 关于解决 Failed to prepare partial IU:

    在新版本的Eclipse(Luna)中安装插件经常会碰到Failed to prepare partial IU的错误,一把都是兼容性的问题,要下载个兼容包,步骤如下: 1.打开安装插件的页面:Hel ...

  9. Cows

    Farmer John's cows have discovered that the clover growing along the ridge of the hill (which we can ...

  10. mybaits 学习

    mybaits  学习(一) 注意:如果建的是web项目,run as java application 参考http://www.cnblogs.com/xdp-gacl/p/4261895.htm ...