springMVC中web短信验证码校验<非原创>

[html] view plaincopy

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <title></title>
  6. </head>
  7. <body onload="checkTime();">
  8. <div align="center">
  9. <div>
  10. <form id="validateForm" action="validate.html">
  11. <div>手机号:<input id="phone" type="text" name="phone" value="" maxlength="11"/></div>
  12. <div>验证码:<input type="text" name="code"><button id="validationCode" type="button" onclick="sendCode(this);" title="获取验证码">获取验证码</button></div>
  13. <div><button type="button" onclick="doValidation();" title="提交">提交</button></div>
  14. </form>
  15. </div>
  16. </div>
  17. </body>
  18. </html>

[javascript] view plaincopy

  1. <script type="text/javascript">
  2. function sendCode(obj){
  3. var phone = document.getElementById("phone");
  4. var value = phone.value.trim();
  5. if(value && value.length == 11){
  6. $.ajax({
  7. cache : false,
  8. url : "sendCode.html",
  9. data : {phone : value}
  10. });
  11. // 1分钟内禁止点击
  12. for (var i = 1; i <= 60; i++) {
  13. // 1秒后显示
  14. window.setTimeout("updateTime(" + (60 - i) + ")", i * 1000);
  15. }
  16. }else{
  17. alert("请输入正确的手机号码");
  18. phone.focus();
  19. }
  20. }
  21. function updateTime(i){
  22. // setTimeout传多个参数到function有点麻烦,只能重新获取对象
  23. var obj = document.getElementById("validationCode");
  24. if(i > 0){
  25. obj.innerHTML  = "距离下次获取还有" + i + "秒";
  26. obj.disabled = true;
  27. }else{
  28. obj.innerHTML = "获取验证码";
  29. obj.disabled = false;
  30. }
  31. }
  32. function checkTime(){
  33. var sendCodeTime = <%=(Long)session.getAttribute("SEND_CODE_TIME")%>;
  34. if(sendCodeTime){
  35. var nowTime = new Date().getTime();
  36. var flag = Math.floor((nowTime - sendCodeTime)/1000);
  37. if(flag < 60){
  38. var end = 60 - flag;
  39. // 进页面马上开始,选i为0
  40. for (var i = 0; i <= end; i++) {
  41. window.setTimeout("updateTime(" + (end - i) + ")", i * 1000);
  42. }
  43. }
  44. }
  45. }
  46. function doValidation(){
  47. if(validateFormValidateor.form()){
  48. $("#validateForm").ajaxSubmit({
  49. success:function(data){
  50. if(data == "success") {
  51. alert("验证成功");
  52. }else{
  53. alert("验证失败");
  54. }
  55. }
  56. });
  57. }
  58. }
  59. var validateFormValidateor;
  60. $().ready(function(){
  61. validateFormValidateor = $("#validateForm").validate({
  62. rules:{
  63. phone:{
  64. required:true,
  65. number:true,
  66. minlength:11
  67. },
  68. code:"required"
  69. },
  70. messages:{
  71. phone:{
  72. required: "请输入手机号码",
  73. number: "只能输入数字",
  74. minlength: "手机号码为11位"
  75. }
  76. }
  77. });
  78. });
  79. </script>

[java] view plaincopy

  1. @Controller
  2. @RequestMapping("/phone")
  3. public class PhoneController {
  4. private static final String VALIDATE_PHONE_CODE = "VALIDATE_PHONE_CODE";
  5. private static final String VALIDATE_PHONE = "VALIDATE_PHONE";
  6. private static final String SEND_CODE_TIME = "SEND_CODE_TIME";
  7. @RequestMapping("index.html")
  8. protected String index() {
  9. return "phone/list";
  10. }
  11. @RequestMapping("sendCode.html")
  12. @ResponseBody
  13. protected void sendCode(String phone, HttpServletRequest request) throws HttpException, IOException {
  14. StringBuilder code = new StringBuilder();
  15. Random random = new Random();
  16. // 6位验证码
  17. for (int i = 0; i < 6; i++) {
  18. code.append(String.valueOf(random.nextInt(10)));
  19. }
  20. HttpSession session = request.getSession();
  21. session.setAttribute(VALIDATE_PHONE, phone);
  22. session.setAttribute(VALIDATE_PHONE_CODE, code.toString());
  23. session.setAttribute(SEND_CODE_TIME, new Date().getTime());
  24. String smsText = "验证码:" + code;
  25. System.out.println("手机号:" + phone + ", " + smsText);
  26. SendMsg_webchinese.sendMessage(phone, smsText);
  27. }
  28. @RequestMapping("validate.html")
  29. @ResponseBody
  30. protected String validate(HttpServletRequest request){
  31. HttpSession session = request.getSession();
  32. String code = (String) session.getAttribute(VALIDATE_PHONE_CODE);
  33. String phone = (String) session.getAttribute(VALIDATE_PHONE);
  34. String inputCode = request.getParameter("code");
  35. String inputPhone = request.getParameter("phone");
  36. if(phone.equals(inputPhone) && code.equalsIgnoreCase(inputCode)){
  37. return "success";
  38. }else{
  39. return "failure";
  40. }
  41. }
  42. }

[java] view plaincopy

  1. import java.io.IOException;
  2. import java.io.UnsupportedEncodingException;
  3. import org.apache.commons.httpclient.Header;
  4. import org.apache.commons.httpclient.HttpClient;
  5. import org.apache.commons.httpclient.HttpException;
  6. import org.apache.commons.httpclient.NameValuePair;
  7. import org.apache.commons.httpclient.methods.PostMethod;
  8. public class SendMsg_webchinese {
  9. public static final String UID = "123";
  10. public static final String KEY = "123456";
  11. public static final String SMS_SEND_URI = "http://utf8.sms.webchinese.cn";
  12. public static final String SMS_NUM_URI = "http://sms.webchinese.cn/web_api/SMS/?Action=SMS_Num";
  13. // 发送短信
  14. public static int sendMessage(String phone, String smsText) throws HttpException, IOException{
  15. PostMethod post = new PostMethod(SMS_SEND_URI);
  16. NameValuePair[] data = { new NameValuePair("Uid", UID),
  17. new NameValuePair("Key", KEY),
  18. new NameValuePair("smsMob", phone),
  19. new NameValuePair("smsText", smsText) };
  20. String result = executeMethod(post, data);
  21. System.out.println("发送短信数量:" + result + ",手机号:" + phone + "信息:" + smsText);
  22. post.releaseConnection();
  23. return Integer.parseInt(result);
  24. }
  25. // 获取短信数量
  26. public static int smsNum() throws UnsupportedEncodingException, IOException{
  27. PostMethod post = new PostMethod(SMS_NUM_URI);
  28. NameValuePair[] data = { new NameValuePair("Uid", UID), new NameValuePair("Key", KEY) };
  29. String result = executeMethod(post, data);
  30. System.out.println("短信数量:" + result);
  31. post.releaseConnection();
  32. return Integer.parseInt(result);
  33. }
  34. private static String executeMethod(PostMethod post, NameValuePair[] data) throws HttpException, IOException{
  35. post.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
  36. post.setRequestBody(data);
  37. HttpClient client = new HttpClient();
  38. client.executeMethod(post);
  39. Header[] headers = post.getResponseHeaders();
  40. int statusCode = post.getStatusCode();
  41. System.out.println("statusCode:" + statusCode);
  42. for (Header h : headers) {
  43. System.out.println(h.toString());
  44. }
  45. return new String(post.getResponseBodyAsString().getBytes("utf-8"));
  46. }
  47. }

短信发送的包可以在参考里的短信发送连接里下,UID和KEY是在里面注册的。

时间: 2024-12-21 19:29:35

springMVC中web短信验证码校验<非原创>的相关文章

[Android]手机短信验证功能

介绍 短信验证功能大家都很熟悉了.在很多地方都能见到,注册新用户或者短息验证支付等.短信验证利用短信验证码来注册会员,大大降低了非法注册,很大程度上提高了用户账户的安全性. 目前市面上已经有了很多提供短信验证的服务商,有收费的,也有免费的.如果是个人的开发者,用免费的是最划算的了!下面我就介绍一个免费的短信验证平台---Mob.com Mob平台提供的短信验证功能可以实现快速的验证和匹配通讯录好友功能,并且能为每个app每天提供10000条免费短信验证.很多开发者都想在自己的app中集成短信验证

Android之短信验证

一.目标 实现Android短信验证 二.下面用一个简单的案例来完成这个功能 1.首先下载短信验证SDK 下载短信验证SDK官网地址:http://www.mob.com 找到SDK下载,在SMS里找到"SMSSDK For Android"下载, 如图: 2.下载完成之后: 将SMSSDK文件夹下的两个.jar文件和.aar文件复制到你项目的Project->app->libs目录下 如图所示: 3.在Android->Gradle Scripts->buli

Yii2在Form中处理短信验证码的Validator,耦合度最低的短信验证码验证方式

短信验证码在目前大多数web应用中都会有,本文介绍一个基于Yii2 Validator方式的验证码验证方式. 在其他文章中看到的方式大多比较难做到一次封装,多次重用. 使用此方式的好处自然不用多说,Validator支持在Model和Form中使用,使用的时候只需要在rules中添加一条验证规则即可. 第一步: 准备数据表,用来存储短信验证码 CREATE TABLE `tbl_sms_log` ( `id` int(11) NOT NULL AUTO_INCREMENT, `to` varch

ASP.NET MVC+Bootstrap 实现短信验证

短信验证大家都已经很熟悉了,基本上每天都在接触手机短信的验证码,比如某宝,某东购物,网站注册,网上银行等等,都要验证我们的手机号码真实性.这样做有什么好处呢. 以前咱们在做网站的时候,为了提高用户注册的质量,防止用户恶意注册,都会设置一些小阻碍,如网页验证码.邮件认证等等.但是道高一尺魔高一丈,很快网站的这些设置都被一些网络黑客利用注册机逐一攻破,这些功能也就随之变成了摆设. 但是魔高一丈道高两丈,随着移动设备的普及,短信验证的功能横空出世.他的出现轻松的排除了传统网站验证码的弊端,还提升了网站

对接短信验证

使用云片网进行短信验证 1.注册云片网账号 2.开发者信息认证(审核通过) 3.新建签名(审核通过) 4.设置模板(审核通过) 5.查看api文档,发送短信形式有很多,国内国外,单条多条等,以国内单条为例. 6.官方文档中面向Python的代码写的比较麻烦,咱们可以自己写 ###yunpian.py import requests import json class YunPian(object): def __init__(self,api_key): self.api_key = api_k

如何实现php手机短信验证功能

http://www.qdexun.cn/jsp/news/shownews.do?method=GetqtnewsdetailAction&id=1677 下载php源代码 现在网站在建设网站时为了保证用户信息的真实性,往往会选择发短信给用户手机发验证码信息,只有通过验证的用户才可以注册,这样保证了用户的联系信息资料的100%的准确性 .今天笔者就跟大家分享一下如何实现php手机短信验证功能,希望对大家有所帮助. 第一.实现php手机短信验证功能的基本思路 1.要找到短信服务提供商,接入短信服

[android]ShareSDK——内容分享和短信验证

前言 新版本号ShareSDK的分享和短信验证,按官网的文档,都须要加入一个<Activity></Activity>标签,而分享和短息验证的这个标签内容都一样.会冲突. 解决的方法:分享用旧版本号,短信验证用新版本号. 后面会有解决的方法. 分享 导入project见初识ShareSDK--嵌入和登陆 <span style="font-size:24px;">OnekeyShare oks = new OnekeyShare(); //全部SSO

【吉光片羽】短信验证

早就听说过阿里大于,短信验证绑定手机的过程我们也经历了很多次.下面简单记录下过程. 1.注册一个应用 得到AppKey 和 App Secret     应用管理-->应用列表 2.设置签名 配置管理-->验证码 签名是出现短信内容最前面的字段,比如[xx科技]xxxx, 这个需要审核.显示是2小时内. 3.设置模板 模板就是用来组织短信内容的部分 4. 应用测试 完成上面3步之后,我们就可以测试下,在应用管理--应用测试 https://www.alidayu.com/center/appl

安卓 短信验证MobSMS集成

概念及原理 了解MobSMS 主要API 初始化接口 短信验证接口 短信验证回调 代码部分 MobSMS添加到项目中: S1.下载官方SDK文件link: S2.添加并配置SDK库文件: 添加aar/jar文件到\app\libs项目目录 配置build.gradle repositories{ flatDir{ dirs 'libs' // SMSSDK-2.1.4.aar/SMSSDKGUI-2.1.4.aar文件目录 } } dependencies { compile fileTree(