第1步:登录美圣短信控制台

http://www.rcscloud.cn/hy/HY_ZH/login

账号:*******

密码:*******

http://www.rcscloud.cn/common/API

第2步:添加账号签名和短信模板

第3步:下载模板

第4步:在项目中新建项目GmkCollege.RCSCloud并将App_Code中的两个文件放到项目中,注意修改命名空间

第5步:前端

<tr class="margin-top">

<td class="padding-top text-center">手机号</td>

<td><input type="text" class="inputs" id="Phone" name="Phone"> </td>

<td><input type="button" value="获取验证码" id="sms" onclick="sendemail()"></td>

</tr>

<tr>

<td class="padding-top text-center">验证码</td>

<td><input type="text" class="inputs" id="Code" name="Code"></td>

</tr>

第6步:js处理

$(function () {

$("#sms").click(function () {

sendCode($("#sms"));

});

v = getCookieValue("secondsremained");//获取cookie值

if (v > 0) {

settime($("#sms"));//开始倒计时

}

})

//发送验证码

function sendCode(obj) {

var phoneNumber = $("#Phone").val();

var result = isPhoneNum(phoneNumber);

if (result) {

//将手机利用ajax提交到后台的发短信接口

$.post("/College/Code", { Phone: phoneNumber }, function (data) {

if (data == "ok") {

alert("验证码发送成功!");

} else {

alert("验证码发送失败,请重新发送!");

}

});

addCookie("secondsremained", 60, 60);//添加cookie记录,有效时间60s

settime(obj);   //开始倒计时

}

}

//开始倒计时

var countdown;

function settime(obj) {

countdown = getCookieValue("secondsremained");

if (countdown == 0) {

obj.removeAttr("disabled");

obj.val("获取验证码");

return;

} else {

obj.attr("disabled", true);

obj.val("重新发送(" + countdown + ")");

countdown--;

editCookie("secondsremained", countdown, countdown + 1);

}

setTimeout(function () { settime(obj) }, 1000) //每1000毫秒执行一次

}

//校验手机号是否合法

function isPhoneNum(phoneNumber) {

var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/;

if (!myreg.test(phoneNumber)) {

alert('请输入有效的手机号码!');

return false;

} else {

return true;

}

}

//发送验证码时添加cookie

function addCookie(name, value, expiresHours) {

var cookieString = name + "=" + escape(value);

//判断是否设置过期时间,0代表关闭浏览器时失效

if (expiresHours > 0) {

var date = new Date();

date.setTime(date.getTime() + expiresHours * 1000);

cookieString = cookieString + ";expires=" + date.toUTCString();

}

document.cookie = cookieString;

}

//修改cookie的值

function editCookie(name, value, expiresHours) {

var cookieString = name + "=" + escape(value);

if (expiresHours > 0) {

var date = new Date();

date.setTime(date.getTime() + expiresHours * 1000); //单位是毫秒

cookieString = cookieString + ";expires=" + date.toGMTString();

}

document.cookie = cookieString;

}

//根据名字获取cookie的值

function getCookieValue(name) {

var strCookie = document.cookie;

var arrCookie = strCookie.split("; ");

for (var i = 0; i < arrCookie.length; i++) {

var arr = arrCookie[i].split("=");

if (arr[0] == name) {

return unescape(arr[1]);

break;

} else {

return "";

break;

}

}

}

第7步:在后台控制器中处理

//美圣融云验证码发送

public ActionResult ValidateCode()

{

string Code = GetRandomString(6);

//发送模板短信

string result = RCSCloudRestAPI.sendTplSms(

"f3b70fc99e1040b99657da1f9411df05",

Request["Phone"],

"@1@="+Code,

""

);

//将验证码设置缓存

var CodeInfo = (Object)Code;

CacheOpt.SetCache("Code", CodeInfo, Convert.ToInt32(60));

return Json(result);

}

#region 生成6位验证码

public string GetRandomString(int iLength)

{

string buffer = "0123456789";    // 随机字符中也可以为汉字(任何)

StringBuilder sb = new StringBuilder();

Random r = new Random();

int range = buffer.Length;

for (int i = 0; i < iLength; i++)

{

sb.Append(buffer.Substring(r.Next(range), 1));

}

return sb.ToString();

}

#endregion

第8步:缓存处理

public class CacheOpt

{

/// <summary>

/// 设置缓存

/// </summary>

/// <param name="CacheKey"></param>

/// <param name="objObject"></param>

/// <param name="Seconds">超过多少秒后过期</param>

public static void SetCache(string CacheKey, object objObject, long Seconds)

{

System.Web.Caching.Cache objCache = HttpRuntime.Cache;

objCache.Insert(CacheKey, objObject, null, System.DateTime.Now.AddSeconds(Seconds), TimeSpan.Zero);

}

/// <summary>

/// 获取数据缓存

/// </summary>

/// <param name="CacheKey">键</param>

public static object GetCache(string CacheKey)

{

System.Web.Caching.Cache objCache = HttpRuntime.Cache;

return objCache[CacheKey];

}

}

asp.net mvc 接入美圣短信 验证码发送的更多相关文章

  1. asp.net mvc 接入阿里大于 短信验证码发送

    项目前端页面实例 第1步:登录阿里大于控制台 https://www.alidayu.com/center/user/account?spm=0.0.0.0.P1K1jG 第2步:创建应用 第3步:配 ...

  2. php实现的IMEI限制的短信验证码发送类

    php实现的IMEI限制的短信验证码发送类 <?php class Api_Sms{ const EXPIRE_SEC = 1800; // 过期时间间隔 const RESEND_SEC = ...

  3. PHP实现对短信验证码发送次数的限制(防机刷验证码)

    PHP实现对短信验证码发送限制(防止机刷验证码) 对用户获取短信验证码的手机号.ip.和浏览器(使用唯一标识)进行限制.本文介绍的方法是对用户每天只能通过同一浏览器或同一ip地址获取验证码10次或者同 ...

  4. 怎么用php实现短信验证码发送

    我在在众多的第三方短信服务商里选择了云片网这个短信服务商,我也会尽可能利用最简单的方式去帮助广大开发者解决短信验证码功能模块的实现. 再次之前我也参考了大部分网上的博客等,大多数都是把云片网的demo ...

  5. PHP实现对短信验证码发送次数的限制

    http://www.jb51.net/article/94878.htm 对用户获取短信验证码的手机号.ip.和浏览器(使用唯一标识)进行限制.本文介绍的方法是对用户每天只能通过同一浏览器或同一ip ...

  6. Tihinkphp3.2整合最新版阿里大鱼进行短信验证码发送

    阿里大鱼最新下载地址:阿里大鱼SDK下载 或者从官网进行下载:阿里大鱼SDK官网下载 下载完成后,将压缩包内的api_sdk文件夹放到ThinkPHP\Library\Vendor目录下,修改文件名为 ...

  7. SSH2框架实现注冊发短信验证码实例

    这两天開始写程序了,让用SSH2框架,曾经没有接触过Java项目更没有接触过SSH2框架,所以用注冊開始了我Java之旅.后来发现,后台代码挺easy理解的,跟.net的差点儿相同.就是层与层之间的调 ...

  8. springboot +spring security4 自定义手机号码+短信验证码登录

    spring security 默认登录方式都是用户名+密码登录,项目中使用手机+ 短信验证码登录, 没办法,只能实现修改: 需要修改的地方: 1 .自定义 AuthenticationProvide ...

  9. 这是一个简单的前台短信验证码功能 ajax实现异步处理 (发送和校验)

    <script type="text/javascript"> var InterValObj; //timer变量,控制时间 var count = 60; //间隔 ...

随机推荐

  1. tar+pigz+ssh实现大数据压缩传输

    磁盘读取---->打包---->压缩------>传输---->解压缩-->拆包---->落盘 |->tar     |->gzip      |-&g ...

  2. 常用的DNS

    中国互联网络中心(推荐,安全又快速):1.2.4.8.210.2.4.8.101.226.4.6(电信及移动).123.125.81.6(联通)阿里DNS:223.5.5.5.223.6.6.6goo ...

  3. 【转载】CANoe 入门 Step by step系列(一)基础应用

    来源:http://www.cnblogs.com/dongdonghuihui/archive/2012/09/26/2704611.html CANoe是Vector公司的针对汽车电子行业的总线分 ...

  4. Hadoop笔记——技术点汇总

    目录 · 概况 · Hadoop · 云计算 · 大数据 · 数据挖掘 · 手工搭建集群 · 引言 · 配置机器名 · 调整时间 · 创建用户 · 安装JDK · 配置文件 · 启动与测试 · Clo ...

  5. vue2中component父子组件传递数据props的使用

    子组件使用父亲传过来的数据,我们需要通过子组件的 props 选项. 组件实例的作用域是孤立的,不能在子组件的模板内直接引用父组件的数据.修改父亲传过来的props数据的时候 父亲必须传递对象,否则不 ...

  6. (转)js jquery.qrcode生成二维码 带logo 支持中文

    场景:公司最最近在开发二维码支付业务,所以需要做一个html5中的二维码生成和部署! 前天用js生成二维码,节省服务器资源及带宽 原版jquery.qrcode不能生成logo,本文采用的是修改版 1 ...

  7. 【D3】transition API

    摘要: 动画类API 一.API 使用 1. 1 d3.ease 1.2 d3.timer Start a custom animation timer, invoking the specified ...

  8. ML(2)--感知机

    案例银行办信用卡--获得感知机 我们到银行办信用卡时,银行并不是直接就给你办卡的,而是会根据你的一些个人信息.消费信息.个人信誉等指标综合考虑后,才会决定是否给你办卡(不像现在银行办信用卡有点随意). ...

  9. opnet的simple_source模块学习 分类: opnet 2014-05-18 09:50 170人阅读 评论(0) 收藏

    simple_source模块可以在外部设置的属性 有四个局部统计量,分别为产生的bit速率.包速率.包大小,包间隔 状态机为三个非强制对象,在头文件里定义了自中断和转移条件. /*Include f ...

  10. 【原创】Superset在windows下的安装配置

    Superset是由Airbnb(知名在线房屋短租公司)开源BI数据分析与可视化平台(曾用名Caravel.Panoramix),该工具主要特点是可自助分析.自定义仪表盘.分析结果可视化(导出).用户 ...