简单验证码实现(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都好解决但是在碰到验证码这个时就有点棘手了:于是通过网上看贴,看官网完成了对简单验证码的识别,如果是复杂的请看大神的 ...
随机推荐
- 转--Oracle 审计和测试操作
http://blog.itpub.net/21605631/viewspace-759640/转 Oracle 审计和测试操作 :: 分类: Linux 1.1 相关参数 AUDIT_SYS_OPE ...
- 关于windows字体的一些笔记
windows如何管理字体 windows的字体管理在注册表的windows/font这部分(具体路径忘记了),这里会记录字体的名称和名称,如果有具体指出路径,windows启动的时候会从这个路径去加 ...
- PHP远程下载图片损坏问题
代码如下: <?php header("Content-type=html/text;charset=utf-8"); function download($file_nam ...
- DOM节点的修改
首先,我们将最后段落赋值给变量my: var my = document.getElementById('closer'); 接下来,我们就能够轻松地通过修改对象的innerHTML值来修改段落中的文 ...
- html__脚本之家
深入剖析Android的Volley库中的图片加载功能 Android图片加载缓存框架Glide Android程序开发ListView+Json+异步网络图片加载+滚动翻页的例子(图片能缓存,图片不 ...
- Windows下单机安装Spark开发环境
机器:windows 10 64位. 因Spark支持java.python等语言,所以尝试安装了两种语言环境下的spark开发环境. 1.Java下Spark开发环境搭建 1.1.jdk安装 安装o ...
- 玩转单元测试之WireMock -- Web服务模拟器
玩转单元测试之WireMock -- Web服务模拟器 WireMock 是一个灵活的库用于 Web 服务测试,和其他测试工具不同的是,WireMock 创建一个实际的 HTTP服务器来运行你的 We ...
- Python基础篇【第2篇】: Python内置函数(一)
Python内置函数 lambda lambda表达式相当于函数体为单个return语句的普通函数的匿名函数.请注意,lambda语法并没有使用return关键字.开发者可以在任何可以使用函数引用的位 ...
- 注册页面JS前台校验
运行效果图: HTML代码: <script> function checkForm(){ //校验用户名 //获得用户名文本框的值 var username=document.getEl ...
- 精妙SQL语句
asc 按升序排列desc 按降序排列 下列语句部分是Mssql语句,不可以在access中使用.SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据 ...