发送手机短信获取验证码功能
2014-05-05 20:46
441 查看
因为移动端的方便,现在网络上很多的网站与应用都有与实现用户手机绑定的功能。这样做的好处很多,例如账号登陆、修改密码、在线支付……等功能模块都可以与手机实时获取验证码短信结合,来确保用户的安全性操作。 而这整功能模块的实现,我把它大致分为三个步骤:(1)前端触发获取验证码,同步显示有效验证倒计时;(2)后台通过代理平台发送验证短信;(3)用户提交验证信息,后台逻辑判断处理。一、首先,与大家分享下前端的实现:如图:输入完正确的手机号码后再触发有效验证倒计时。JS代码如下(头部需引入jquery):
function getCode(){ var tel = $("#mobile").val();//获取手机号码输入框值 var reg = /^1[3|4|5|8][0-9]\d{4,8}$/; if(!reg.test(tel)){ //校验手机号码格式 alert("请先输入您的正确手机号!"); document.form1.o_tel.focus(); return false; } var paras = "o_tel="+tel; //jquery post方法同步提交 //(提交地址; data:返回值) $.post('<%=basePath%>mobile/sendCode?'+paras,function(data) { if(data!=null&&typeof(data)!="undefined"){ var msg = data.msg; //返回值为json格式 if(msg!=null&&typeof(msg)!="undefined"&&msg=="SUCCESS"){ get_code_time(); //发送成功则出发get_code_time()函数 }else{ alert("短信验证码发送失败!请重新获取。"); } }else{ alert("短信验证码发送失败!请重新获取。"); } },"json"); } var wait = 120; function get_code_time(){ if(wait==0){ $("#updateverify").removeAttr("disabled");//移除获取验证码按钮的disabled属性 $("#updateverify").val("获取验证码"); wait = 120; }else{ $("#updateverify").attr("disabled", true);//设置获取验证码按钮为不可触发 $("#updateverify").val("剩(" + wait + ")秒"); wait--; setTimeout("get_code_time()", 1000); } }二、接下来我们就该在后台进行短息发送处理了(Demo是用java整合Spring MVC框架写的):
/** * 订单查询发送验证码 * @param request * @param response * @return */ @RequestMapping(value="/sendCode",method={RequestMethod.POST,RequestMethod.GET}) public String sendCode(HttpServletRequest request,HttpServletResponse response){ HttpSession session = request.getSession(); String ret=""; String o_tel = request.getParameter("o_tel");//获取前端传送过来的电话号码 if(o_tel!=null&&o_tel!=""){ int Random = (int) ((Math.random()*9+1)*1000);//随机生成的4位数(验证码) String mes = Random+"(用于测试的验证码,两分钟内有效)【学而思博客】";//需在短信中显示的文字信息描述 ApiSendMobile asm = new ApiSendMobile(); String msg = asm.sendSM(o_tel, mes);//发送短信 if("发送成功".equals(msg)){ ret = "{\"msg\":\"SUCCESS\"}"; //把验证码与电话号码存入session中,并设置120秒有效期限 session.setAttribute("code", Random); session.setAttribute("tel", o_tel); session.setMaxInactiveInterval(2*60); }else { ret = "{\"msg\":\"ERROR\"}"; } }else{ ret = "{\"msg\":\"ERROR\"}"; } response.setContentType("application/json;charset=UTF-8"); PrintWriter writer = null; try { writer = response.getWriter(); } catch (IOException e) { e.printStackTrace(); } writer.write(ret);//推送回前端 return null; }后台的大概逻辑就是这样,不熟悉SpringMVC的请不要在意太多细节。因为接下来的才是我要说的关键点:
ApiSendMobile asm =
new
ApiSendMobile();我们言归正传,本文的例子就是用了第一种方法,上代码:
package com.xiaoxm.util; import java.io.BufferedReader; import com.jasson.im.api.APIClient; /** * ApiTestDemo */ public class ApiSendMobile { private long smId = 1; private int smType = 0; private String host = "mas地址"; private String dbName = "mas"; private String apiId = "用户apid"; private String name = "用户名"; private String pwd = "密码"; private APIClient handler = new APIClient(); BufferedReader in = null; public ApiSendMobile() { } public void init() { int connectRe = handler.init(host, name, pwd, apiId,dbName); if(connectRe == APIClient.IMAPI_SUCC) info("初始化成功"); else if(connectRe == APIClient.IMAPI_CONN_ERR) info("连接失败"); else if(connectRe == APIClient.IMAPI_API_ERR) info("apiID不存在"); if(connectRe != APIClient.IMAPI_SUCC) { System.exit(-1); } } public void release() { handler.release(); Thread.currentThread().interrupt(); } public String sendSM(String mobile,String sendContent) { init(); //初始化 相关参数 String msg = ""; int result = 0; result = handler.sendSM(mobile, sendContent, smId ); if(result == APIClient.IMAPI_SUCC) { msg = "发送成功"; } else if(result == APIClient.IMAPI_INIT_ERR) msg = "未初始化"; else if(result == APIClient.IMAPI_CONN_ERR) msg = "数据库连接失败"; else if(result == APIClient.IMAPI_DATA_ERR) msg = "参数错误"; else if(result == APIClient.IMAPI_DATA_TOOLONG) msg = "消息内容太长"; else if(result == APIClient.IMAPI_INS_ERR) msg = "数据库插入错误"; else msg = "出现其他错误"; release(); //释放资源 return msg; } public void error(Object obj , Throwable thr) { info(obj); thr.printStackTrace(); } public void info(Object obj) { System.out.println(obj); } public void quit() { release(); System.exit(0); } }因为涉及到隐私,所以什么地址、用户名密码之类的,自己去向运营商联系获取吧…… 要注意哦:这个类里
引入了import
com.jasson.im.api.APIClient;
还有就是项目中也必须加一个jar包:ImApi.jar
如果有去和运营商合作的话,他们会给你文档和所需的开发包之类的,所以你大可放心。
嗯,该功能模块的核心内容都已经介绍得差不多了,就只剩下用户查看短信验证信息,输入了传到后台,然后再获取刚才发送短信成功时存入session中连个值进行对比验证。我也就不在此啰嗦……
结语:天下没有白吃的午餐,垄断行业就是屌。水平不足,文章中也许存在着许多不足之处,还望大家指点与纠正。坚持博客精神,分享是一种快乐!
相关文章推荐
- 发送手机短信获取验证码功能
- 发送手机短信获取验证码功能
- 发送手机短信获取验证码功能
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用
- java调接口实现发送手机短信验证码功能,手机验证码,接口调用
- java调接口实现发送手机短信验证码功能,手机验证码,接口调用
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用
- java调接口实现发送手机短信验证码功能,手机验证码,接口调用
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用
- vue 实现通过手机发送短信验证码注册功能
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用
- 手机验证码平台,怎么发送手机验证码,php开发手机验证码短信接口功能
- java调接口实现发送手机短信验证码功能,手机验证码,接口调用
- Java调用WebService接口实现发送手机短信验证码功能
- PHP 手机短信发送验证码
- C#怎么实现手机短信发送功能
- 用户点击获取验证码之后我们会发送一条信息到用户手机,然后就会出现一个倒计时按钮,很像支付宝手机付款效果了,下面我给大家分享两个js效果