简单验证码实现(Ajax)
前端页面:
<!--验证码输入框 -->
<input type="text" class="entry" value="" placeholder="请输入短信验证码" id="u_code" autocomplete="off">
<!--获取验证码的按钮 -->
<input type="button" id="smsBtn" class="obtain" value="获取验证码" onclick="getRandNum(this);">
<!-- 服务器返回的验证码隐藏域 -->
<input type="hidden" name="randNum" id="randNum" value="" /> <a class="land" onclick="safeLogin()">确认登陆</a>
JS发送AJAX请求发送验证码:
获取到服务器响应后更新页面的隐藏域,在用户提交表单的时候可以此判断验证码是否输入正确。
<script>
var wait=0; function getRandNum(){
var photo = "${safePhone }";
var auId = "${auId }" ;
//alert(photo);
var xmlHttp = null;
//表示当前浏览器不是ie,如ns,firefox
if(window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
} else if(window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlHttp.onreadystatechange=function()
{
if (xmlHttp.readyState==4 && xmlHttp.status==200)
{
alert("验证码发送成功,请注意查收");
document.getElementById("randNum").value=xmlHttp.responseText;
wait=60;
var smsBtn = document.getElementById("smsBtn");
time(smsBtn);
}
}
xmlHttp.open("GET","${basePath }login/sendSmsCode.action?phone="+photo+"&auId="+auId,true);
xmlHttp.send(); } //计时
function time(o) {
if (wait == 0) {
o.removeAttribute("disabled");
//o.setAttribute("disabled", false);
o.value="获取验证码";
wait = 60;
document.getElementById("randNum").value="";
} else {
o.setAttribute("disabled", true);
o.value="已发(" + wait + "s)";
wait--;
setTimeout(function() {time(o)},1000);
}
} function safeLogin(){
var u_code = document.getElementById("u_code").value;
var s_code = document.getElementById("randNum").value;
//alert(u_code);
if(u_code==""){
alert("验证码不能为空!");
return false ;
}
if(u_code!=s_code){
alert("验证码输入不正确,请输入正确验证码!");
return false ;
} var safeLoginFrm = document.getElementById("safeLoginFrm");
safeLoginFrm.submit();
} </script>
服务器端ACTION:
/*
* 发送短信验证码
*/
public void sendSmsCode() {
HttpServletResponse response = ServletActionContext.getResponse(); // 产生6位随机数字
Random r = new Random();
String randNum = "";
for (int i = 0; i < 6; i++) {
randNum += r.nextInt(10);
}
String content = "【验证码】" + randNum + "(后台安全登陆验证码,一分钟内有效)";
// 发送短信begin:
Map<String, String> sendMap = SendSmsMessage
.sendMessage(content, phone);
Integer sms_code = Integer.parseInt(sendMap.get("Code"));
String sms_result = sendMap.get("Result");
// 发送短信end try {
PrintWriter writer = response.getWriter();
writer.print(randNum);
writer.flush();
writer.close();
} catch (Exception e) {
e.printStackTrace();
} }
上面简单实现了验证码功能,也算是一个AJAX的一个实例。
简单验证码实现(Ajax)的更多相关文章
- php生成动态验证码 加减算法验证码 简单验证码
预览效果: <?php /** *ImageCode 生成包含验证码的GIF图片的函数 *@param $string 字符串 *@param $width 宽度 *@param $height ...
- 简单验证码识别(matlab)
简单验证码识别(matlab) 验证码识别, matlab 昨天晚上一个朋友给我发了一些验证码的图片,希望能有一个自动识别的程序. 1474529971027.jpg 我看了看这些样本,发现都是很规则 ...
- 用imagemagick和tesseract-ocr破解简单验证码
用imagemagick和tesseract-ocr破解简单验证码 Tesseract-ocr据说辨识程度是世界排名第三,可谓神器啊. 准备工作: 1.安装tesseract-ocr sudo apt ...
- php笔记之GD库图片创建/简单验证码
燕十八 公益PHP培训 课堂地址:YY频道88354001 学习社区:www.zixue.it php画图:比如说验证码,缩略图,加水印都要用到GD库,所以要开启gd2库,才能用 首先找到php.in ...
- 开发工具类API调用的代码示例合集:六位图片验证码生成、四位图片验证码生成、简单验证码识别等
以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 六位图片验证码生成:包括纯数字.小写字母.大写字母.大小写混合.数 ...
- js简单验证码的生成和验证
如何用js生成简单验证码,并验证是否正确的方法 1.html页面如下 <div> <table border="0" cellspacing="5&qu ...
- 基于ajax 的 几个例子 session ,ajax 实现登录,验证码 ,实现ajax表单展示
headers: {"X-CSRFToken": $("[name='csrfmiddlewaretoken']").val()},data:$(". ...
- php实现简单验证码的功能
php实现简单验证码的功能 <!DOCTYPE html> <html> <head lang="en"> <meta charset=& ...
- python简单验证码识别
在学习python通过接口自动登录网站时,用户名密码.cookies.headers都好解决但是在碰到验证码这个时就有点棘手了:于是通过网上看贴,看官网完成了对简单验证码的识别,如果是复杂的请看大神的 ...
随机推荐
- Streaming replication slots in PostgreSQL 9.4
Streaming replication slots are a pending feature in PostgreSQL 9.4, as part of the logical changese ...
- 家有学霸的CEO
小余老师说 http://learning.sohu.com/20161101/n471998591.shtml
- linux下Nginx 安装配置
Nginx 安装 一.首先要安装 PCRE PCRE 作用是让 Ngnix 支持 Rewrite 功能. 1.下载 PCRE 安装包,下载地址: http://downloads.sourceforg ...
- 基于Open vSwitch搭建虚拟路由器
As part of my work in OpenDaylight, we are looking at creating a router using Open vSwitch... Why? W ...
- 为什么学习Ruby On Rails:
简单总结了一下自己为什么喜欢ruby on rails: 语法简单,写代码很愉快,比较接近伪代码: 喜欢其强大的正则表达式和字符串操作. ruby中面向对象更自由,更动态: ruby给人信任,相信你了 ...
- Android无法收到指定广播的问题总结
首先是应用中不能只有一个广播,必须有一个activity或者service(这种情况比较复杂参考http://www.cnblogs.com/welcoming/p/4120497.html) 简单的 ...
- UVA 1658 海军上将(拆点法+最小费用限制流)
海军上将 紫书P375 这题我觉得有2个难点: 一是拆点,要有足够的想法才能把这题用网络流建模,并且知道如何拆点. 二是最小费用限制流,最小费用最大流我们都会,但如果限制流必须为一个值呢?比如这题限制 ...
- mysql登录基本语句
默认密码:root mysql 显示所有的数据库,代码如下: mysql> show databases; mysql> show tables; MySQL显示命令二.显示命令 1.显示 ...
- WPF绑定数据源
using System;using System.Collections.Generic;using System.Collections.ObjectModel;using System.Comp ...
- The listener supports no services解决一例
The listener supports no services解决一例 Listener动态监听静态监听注册实例 今天做Advacned Replication实验的时候碰到一个问题,启动目标 ...