使用JS来实现验证码功能
最近想为自己的Django博客添加验证码功能,本来想使用第三方库来实现的,不过考虑到添加第三方库对性能的影响,以及第三方库是否安全可靠的问题,还是用自己的代码来实现吧。反正用JS来实现验证码功能又不是很难。
简单来说,用一个create_code()方法在页面中生成验证码,然后control_submit()方法检测验证码文本框(id=“user_input_code”)的键盘输入事件,当文本框输入了超过4个字符后,调用verify_code ()检测输入的字符与生成的验证码是否一致,假如一致的话,把提交评论按钮的disabled属性从true改为false,假如不一致的话,在页面显示验证码错误。
js代码如下:
$(document).ready(function (){
var codeLength = 4;
create_code(codeLength);
change_code(codeLength);
control_submit(codeLength);
initial_blog_page();
});
function change_code(codeLength) {
//更改验证码
$("#checkCode").click(function () {
create_code(codeLength);
});
}
var code ;
function create_code(codeLength){
//生成验证码
code = "";
var checkCode = $("#checkCode");
var selectChar = new Array(0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F','G','H','I','J','K','L',
'M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
for(var i=0;i<codeLength;i++){
var charIndex = Math.floor(Math.random()*36);
code +=selectChar[charIndex];
}
if(checkCode){
checkCode.addClass("code");
checkCode.val(code);
}
}
function verify_code (){
//验证验证码
var user_input_code = $("#user_input_code").val().toLowerCase().trim();
if(user_input_code.length <=0){
return false;
} else if(user_input_code != code.toLowerCase()){
return false;
}
return true;
}
function control_submit(codeLength) {
//当验证码验证成功后,才允许提交评论
$("#user_input_code").keyup(function () {
var code_len = $("#user_input_code").val().trim().length
if (code_len < codeLength) {
$("#valid_failed").text("");
} else if (code_len > codeLength) {
$("#valid_failed").text("验证码错误");
$("#submit_comment").attr("disabled", true);
} else {
if (verify_code()) {
$("#submit_comment").attr("disabled", false);
} else {
$("#valid_failed").text("验证码错误");
}
}
});
}
function initial_blog_page() {
//防止从评论模块的perview页面后退到blog页面时,评论的提交按钮仍然维持disable=“false”状态
$("#submit_comment").attr("disabled", true);
}
在html页面中对应的form中增加下面元素:
<form ...>
<input id="user_input_code" type="text" name="code" placeholder="请输入右侧的验证码"/>
<input type="text" readonly="readonly" id="checkCode" class="code" style="width: 60px;" />
<p id="valid_failed"></p>
<tr>
<td colspan="2">
<input id="submit_comment" type="submit" disabled="true" name="submit" value="提交评论">
</td>
</tr>
</form>
最后在css文件中修改一下验证码元素的属性,例如字符间隔,颜色,背景图片等,即可完成验证码功能。
使用JS来实现验证码功能的更多相关文章
- 纯JS实现图片验证码功能并兼容IE6-8
最近要搞一个图片验证码功能,但是又不想自己写后台代码.于是自己准备搞一个纯前端的验证码功能,于是网上搜索了一下,找到一个插件gVerify.js,简单好用,实现完美.不过后面接到说要兼容IE8,想想也 ...
- JS 实现随机验证码功能
1.验证码 验证是网页常出现的一个验证点,所谓验证码类型有很多,下面代码只是实现一个简单的验证功能. <div> <input type = "text" id ...
- captcha.js一个生成验证码的插件,使用js和canvas生成
一.captcha`captcha.js`是一个生成验证码的插件,使用js和canvas生成的,确保后端服务被暴力攻击,简单判断人机以及系统的安全性,体积小,功能多,支持配置. 验证码插件内容,包含1 ...
- .NET Core实战项目之CMS 第十六章 用户登录及验证码功能实现
前面为了方便我们只是简单实现了基本业务功能的增删改查,但是登录功能还没有实现,而登录又是系统所必须的,得益于 ASP.NET Core的可扩展性因此我们很容易实现我们的登录功能.今天我将带着大家一起来 ...
- MVC基本登陆与验证码功能实现
一.基本登陆实现与验证码功能实现,该功能是和spring.net功能集合使用的,因为后面要用到验证是否处于登陆状态 1. 先构建一个登陆页面 @{ Layout = null; } <!DOCT ...
- Servlet案例3:验证码功能
这里介绍简单的验证码功能 动态生成图片 一个简单的页面: <!DOCTYPE html> <html> <head> <meta charset=" ...
- php CI框架实现验证码功能和增强验证码安全性实战教程
php CI框架实现验证码功能和增强验证码安全性实战教程 CodeIgniter简称CI是最流行的一个php MVC框架之一,本人讲从实际项目使用中写系列实战经验,有别与其他的理论讲解文章,会附上实战 ...
- 一步一步实现web程序信息管理系统之三----登陆业务逻辑实现(验证码功能+参数获取)
本篇紧接着上一篇文章[一步一步实现web程序信息管理系统之二----后台框架实现跳转登陆页面] 验证码功能 一般验证码功能实现方式为,前端界面访问一个url请求,后端服务代码生成一个图片流返回至浏览器 ...
- django验证码功能
1.目的 现在我们一般访问网页都需要输入验证码,比如博客园,有的甚至是通过手机验证码实时登录.这样做的目的主要还是为了防止其他人的恶意访问,比如爬虫,下面就来看看验证码是如何实现的 2.StringI ...
随机推荐
- Myeclipse8.5注册码
今天安装了Myeclipse8.5,记录一下. 一般官网上下载的都只能使用30天,要想使用更长时间,需要注册. 有一个生成注册码的网站:http://www.lephones.info 使用这个网站, ...
- nodejs的mysql模块学习(三)数据库连接配置选项详解
连接选项 当在创建数据连接的时候 第一种大多数人用的方法 let mysql = require('mysql'); let connection = mysql.createConnection({ ...
- ASP.NET MVC and jqGrid 学习笔记 6-增删改操作
程序结构: Member.cs CRUD.cshtml CRUD.js HomeController 一.Model public class Member { [Key] public int No ...
- Python学习笔记 第一课 列表
Python的列表就像是一个数组: 一.创建列表 movies=["The Holy Grail","Then Life of Brian","The ...
- Android网络请求与解析
1.Volley和Gson结合使用——Volley适用于小型数据,多次的请求,使用Gson解析时,服务器数据的键值不能包含常用的标识符如:class.....等,这些就需要与服务端小伙伴商量 这样也可 ...
- 视频播放-VideoVIew,Vitamio
播放视频文件其实并不比播放音频文件复杂,主要是使用 VideoView类来实现的.这个类将视频的显示和控制集于一身,使得我们仅仅借助它就可以完成一个简易的视频播放器.VideoView的用法和 Med ...
- Eclipse 中引用其他项目及项目打包
1.建立工程project1; 2.建立class文件ClassA: package com.test; public class ClassA{ public static String getCl ...
- hdu 3333 树状数组
思路:定义一个map容器用来记录数ai上次出现的位置.将查询区间按右边界升序进行排序,当插入第i个数ai时,pre[ai]+1---->i的区间就会多一个不同的数,其值就是ai,那么可以用upd ...
- PE制作实录 —— 定义我的 PE 工具箱
Step 1 想个好听的名字 我倒是没什么文化,洋气点又要方便记忆,最终锁定 Operit! ,源自英语 Operate .it ,合并一下再加上感叹号,洋气吧~ Step 2 利用百草霜制作 Mes ...
- white-space:nowrap 的妙用
对于多个元素同在同一行的布局,如比较常见的是轮播.下面我将探讨这这一布局的做法: 首先约定html结果如下: div.row div.col div.col div.col ... 做法一: 设定di ...