asp.net mvc 接入美圣短信 验证码发送
第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 接入美圣短信 验证码发送的更多相关文章
- asp.net mvc 接入阿里大于 短信验证码发送
项目前端页面实例 第1步:登录阿里大于控制台 https://www.alidayu.com/center/user/account?spm=0.0.0.0.P1K1jG 第2步:创建应用 第3步:配 ...
- php实现的IMEI限制的短信验证码发送类
php实现的IMEI限制的短信验证码发送类 <?php class Api_Sms{ const EXPIRE_SEC = 1800; // 过期时间间隔 const RESEND_SEC = ...
- PHP实现对短信验证码发送次数的限制(防机刷验证码)
PHP实现对短信验证码发送限制(防止机刷验证码) 对用户获取短信验证码的手机号.ip.和浏览器(使用唯一标识)进行限制.本文介绍的方法是对用户每天只能通过同一浏览器或同一ip地址获取验证码10次或者同 ...
- 怎么用php实现短信验证码发送
我在在众多的第三方短信服务商里选择了云片网这个短信服务商,我也会尽可能利用最简单的方式去帮助广大开发者解决短信验证码功能模块的实现. 再次之前我也参考了大部分网上的博客等,大多数都是把云片网的demo ...
- PHP实现对短信验证码发送次数的限制
http://www.jb51.net/article/94878.htm 对用户获取短信验证码的手机号.ip.和浏览器(使用唯一标识)进行限制.本文介绍的方法是对用户每天只能通过同一浏览器或同一ip ...
- Tihinkphp3.2整合最新版阿里大鱼进行短信验证码发送
阿里大鱼最新下载地址:阿里大鱼SDK下载 或者从官网进行下载:阿里大鱼SDK官网下载 下载完成后,将压缩包内的api_sdk文件夹放到ThinkPHP\Library\Vendor目录下,修改文件名为 ...
- SSH2框架实现注冊发短信验证码实例
这两天開始写程序了,让用SSH2框架,曾经没有接触过Java项目更没有接触过SSH2框架,所以用注冊開始了我Java之旅.后来发现,后台代码挺easy理解的,跟.net的差点儿相同.就是层与层之间的调 ...
- springboot +spring security4 自定义手机号码+短信验证码登录
spring security 默认登录方式都是用户名+密码登录,项目中使用手机+ 短信验证码登录, 没办法,只能实现修改: 需要修改的地方: 1 .自定义 AuthenticationProvide ...
- 这是一个简单的前台短信验证码功能 ajax实现异步处理 (发送和校验)
<script type="text/javascript"> var InterValObj; //timer变量,控制时间 var count = 60; //间隔 ...
随机推荐
- CSS单位
一.em单位:相对单位,相对于父级大小. <div class="fs"> 你看看我的字体大小 <div class="fs"> 你在看 ...
- [bzoj 2243]: [SDOI2011]染色 [树链剖分][线段树]
Description 给定一棵有n个节点的无根树和m个操作,操作有2类: 1.将节点a到节点b路径上所有点都染成颜色c: 2.询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段),如“ ...
- Java 接口-抽象类解析
对于面向对象编程,抽象是它的三大特征(抽象.继承.多态)之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类. 这两者既相似又存异.诸位在初学的时候也会傻傻分不清接口与抽象类的区别,大 ...
- LuaFramework热更新过程(及可更新的loading界面实现)
1.名词解释: 资源包:点击 LuaFramework | Build XXX(平台名) Resource,框架会自动将自定义指定的资源打包到StreamingAssets文件夹,这个 ...
- 【SignalR学习系列】6. SignalR Hubs Api 详解(C# Server 端)
如何注册 SignalR 中间件 为了让客户端能够连接到 Hub ,当程序启动的时候你需要调用 MapSignalR 方法. 下面代码显示了如何在 OWIN startup 类里面定义 SignalR ...
- 用letsencrypt搭建免费的https网站
环境:阿里云服务器centos7.3,nignx,letsencrypt做免费的https证书 Let’s Encrypt官网:https://letsencrypt.org/ 1.服务器开放端口:4 ...
- Android对话框和帧动画
Android对话框 在一个例子中展示四种对话框. 设置四个按钮 <LinearLayout xmlns:android="http://schemas.android.com/apk ...
- Android中的Activity
Android四大组件 活动(Activity) 广播接收者(BroadCastReceiver) 服务(Service) 内容提供者(Contentprovider) Activity 先来看And ...
- MySQL系列(五)---总结MySQL中的锁
MySQL中的锁 目录 MySQL系列(一):基础知识大总结 MySQL系列(二):MySQL事务 MySQL系列(三):索引 MySQL系列(四):引擎 概述 MyISAM支持表锁,InnoDB支持 ...
- HTML相关知识
1 Day01HTML HTML5声明:<!doctype html> <html> 1.1 HTML基本结构: <head> <title>题目< ...