验证码的作用:

  1.有效防止这种问题对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上是用验证码是现在很多网站通行的方式(比如招商银行的网上个人银行,腾讯的QQ社区),我们利用比较简易的方式实现了这个功能。

  2.防止批量注册

首先要准备jquery、jquery.idcode.css 和 jquery.idcode.js 三个脚本,然后再html文档中进行实例生成。 

jquery.idcode.css 样式:
 @charset "utf-8";
/* track base Css */ .ehong-idcode-val{
position:relative;
padding:1px 4px 1px 4px;
top:0px;
*top:-3px;
letter-spacing:4px;
display:inline;
cursor:pointer;
font-size:20px;
font-family:"Courier New", Courier, monospace;
text-decoration:none;
font-weight:bold;
}
.ehong-idcode-val0{
border:solid 1px #A4CDED;
background-color:#ECFAFB;
} .ehong-idcode-val1{
border:solid 1px #A4CDED;
background-color:#FCEFCF;
}
.ehong-idcode-val2{
border:solid 1px #6C9;
background-color:#D0F0DF;
}
.ehong-idcode-val3{
border:solid 1px #6C9;
background-color:#DCDDD8;
}
.ehong-idcode-val4{
border:solid 1px #6C9;
background-color:#F1DEFF;
}
.ehong-idcode-val5{
border:solid 1px #6C9;
background-color:#ACE1F1;
}
.ehong-code-val-tip{
font-size:12px;
color:#1098EC;
top:0px;
*top:-3px;
position:relative;
margin:0px 0px 0px 4px;
cursor:pointer;
}

jquery.idcode.css

jquery.idcode.js 脚本:
 (function($){
var settings = {
e : 'idcode',
codeType : { name : 'follow', len: 4},
codeTip : 'refresh?',
inputID : 'Txtidcode' //引用验证码输入框Id
}; var _set = {
storeLable : 'codeval',
store : '#ehong-code-input',
codeval : '#ehong-code'
}
$.idcode = {
getCode:function(option){
_commSetting(option);
return _storeData(_set.storeLable, null);
},
setCode:function(option){
_commSetting(option);
_setCodeStyle("#"+settings.e, settings.codeType.name, settings.codeType.len); },
validateCode:function(option){
_commSetting(option);
var inputV;
if(settings.inputID){
inputV=$('#' + settings.inputID).val();
}else{
inputV=$(_set.store).val();
} if(inputV == _storeData(_set.storeLable, null)){
return true;
}else{
_setCodeStyle("#"+settings.e, settings.codeType.name, settings.codeType.len);
return false;
}
}
}; function _commSetting(option){
$.extend(settings, option);
} function _storeData(dataLabel, data){
var store = $(_set.codeval).get(0);
if(data){
$.data(store, dataLabel, data);
}else{
return $.data(store, dataLabel);
}
} function _setCodeStyle(eid, codeType, codeLength){
var codeObj = _createCode(settings.codeType.name, settings.codeType.len);
var randNum = Math.floor(Math.random()*6);
var htmlCode=''
if(!settings.inputID){
htmlCode='<span><input id="ehong-code-input" type="text" maxlength="4" /></span>';
}
htmlCode+='<div id="ehong-code" class="ehong-idcode-val ehong-idcode-val';
htmlCode+=String(randNum);
htmlCode+='" href="#" onblur="return false" onfocus="return false" oncontextmenu="return false" onclick="$.idcode.setCode()">' + _setStyle(codeObj) + '</div>' + '<span id="ehong-code-tip-ck" class="ehong-code-val-tip" onclick="$.idcode.setCode()">'/*+ settings.codeTip*/ +'</span>';
$(eid).html(htmlCode);
_storeData(_set.storeLable, codeObj);
} function _setStyle(codeObj){
var fnCodeObj = new Array();
var col = new Array('#BF0C43', '#E69A2A','#707F02','#18975F','#BC3087','#73C841','#780320','#90719B','#1F72D8','#D6A03C','#6B486E','#243F5F','#16BDB5');
var charIndex;
for(var i=0;i<codeObj.length;i++){
charIndex = Math.floor(Math.random()*col.length);
fnCodeObj.push('<font color="' + col[charIndex] + '">' + codeObj.charAt(i) + '</font>');
}
return fnCodeObj.join('');
}
function _createCode(codeType, codeLength){
var codeObj;
if(codeType=='follow'){
codeObj = _createCodeFollow(codeLength);
}else if(codeType=='calc'){
codeObj = _createCodeCalc(codeLength);
}else{
codeObj="";
}
return codeObj;
} function _createCodeCalc(codeLength){
var code1, code2, codeResult;
var selectChar = new Array('0','1','2','3','4','5','6','7','8','9');
var charIndex;
for(var i=0;i<codeLength;i++){
charIndex = Math.floor(Math.random()*selectChar.length);
code1 +=selectChar[charIndex]; charIndex = Math.floor(Math.random()*selectChar.length);
code2 +=selectChar[charIndex];
}
return [parseInt(code1), parseInt(code2) , parseInt(code1) + parseInt(code2)] ;
} function _createCodeFollow(codeLength){
var code = "";
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()*selectChar.length);
if(charIndex % 2 == 0){
code+=selectChar[charIndex].toLowerCase();
}else{
code +=selectChar[charIndex];
}
}
return code;
} })(jQuery);

jquery.idcode.js

jquery 的脚本从官网上下载即可。

html代码部分:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"> <title>jQuery区分大小写验证码</title> <!--//引用css-->
<link href="css/jquery.idcode.css" type="text/css" rel="stylesheet">
</head>
<body>
<center><br><br>
<input type="text" id ="Txtidcode" class ="txtVerification"><span id="idcode"></span>
<input type="button" id="butn" value="提交"></center>
<script src="js/jquery-1.12.3.min.js"></script>
<!--//引用idcode插件-->
<script src="js/jquery.idcode.js"></script>
<script>
$.idcode.setCode(); //加载生成验证码方法
$("#butn").click(function(){
var IsBy = $.idcode.validateCode() //调用返回值,返回值结果为true或者false
if(IsBy){
alert("验证码输入正确")
}else {
alert("请重新输入")
}
})
</script> </body>
</html>

 
 

Jquery 客户端生成验证码的更多相关文章

  1. 基于CANVAS与MD5的客户端生成验证码

    好久没写东西,工作太忙了!不想服务端请求太多,搞了个这玩意儿,不过项目中并不会用上,还是使用服务端生成的机制(会安全多少呢?):我就想问个问题,除了图像识别来破解这样的简单验证码外,针对我这种例子,可 ...

  2. jQuery.qrcode.js客户端生成二维码,支持中文并且可以生成LOGO

    描述: jquery.qrcode.js 是一个能够在客户端生成矩阵二维码QRCode 的jquery插件 ,使用它可以很方便的在页面上生成二维条码.此插件是能够独立使用的,体积也比较         ...

  3. servlet生成验证码

    1.因为朋友们都说现在很少用java自带的图形用户接口,所以小白的我就没去看awt和swing组件,因为要抓紧时间学习后面的,完了出去找工作,等以后再回来了解awt和swing:所以制作验证码的代码是 ...

  4. nodejs 生成验证码

    此方法需要nodejs 安装canvas 扩展 准备工作 以Linux为例 1.服务器gcc版本需4.8以上 2.安装所需扩展 yum install cairo cairo-devel cairom ...

  5. Django(十六)基于模板的登录案例:登录装饰器、csrf攻击方式及防护、ajax的Post 的csrf开启写法、生成验证码、加验证码登录、反向解析+传参

    一.csrf攻击 1.1 csrf攻击(跨站请求伪造) [csrf攻击即]:通过第3方网站,伪造请求(前提条件是你已经登录正常网站,并保存了session或cookie登录信息且没有退出),第三方网站 ...

  6. java web学习总结(九) -------------------通过Servlet生成验证码图片

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:

  7. ASP.NET ashx实现无刷新页面生成验证码

    现在大部分网站登陆时都会要求输入验证码,在网上也看了一些范例,现在总结一下如何实现无刷新页面生成验证码. 效果图: 实现方式: 前台: <div> <span>Identify ...

  8. JavaWeb---总结(九)通过Servlet生成验证码图片

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片  1 package gacl. ...

  9. javaweb学习总结(九)—— 通过Servlet生成验证码图片

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:

随机推荐

  1. 解决Centos 7 下 tomcat字体异常 Font '宋体' is not available to the JVM

    错误提示: SEVERE: Servlet.service() for servlet [example] in context with path [/myproject] threw except ...

  2. underscore 1.7.0 api

    它是这个问题的答案:“如果我在一个空白的HTML页面前坐下, 并希望立即开始工作, 我需要什么?“ http://www.css88.com/doc/underscore/#

  3. PayPal为什么从Java迁移到Node.js

    前言 大家都知道PayPal是另一家迁移到Node.js平台的大型公司,Jeff Harrell的这篇博文 Node.js at PayPal  解释了为什么从Java迁移出来的原因: 开发效率提高一 ...

  4. Weex系列一、构建Weex工程

    Weex比React Native更简单,更容易学习,并且做到真正的跨平台,一套代码可以多个平台运行.所以建议大家都用Weex吧. 一.安装Node 已经安装Node的,请忽略过去. 检查Node是否 ...

  5. Apriori算法原理总结

    Apriori算法是常用的用于挖掘出数据关联规则的算法,它用来找出数据值中频繁出现的数据集合,找出这些集合的模式有助于我们做一些决策.比如在常见的超市购物数据集,或者电商的网购数据集中,如果我们找到了 ...

  6. secache 详解

    介绍下secache缓存,它是属于文件缓存.简单来说,文件缓存就是把缓存数据存储到文件系统 (硬盘)中了,比 内存缓存要慢一些,但是也是有一点优点的. 1.磁盘容量大, 2保存到硬盘,说明 掉电后数据 ...

  7. 深圳尚学堂:Web程序员应该会的知识

    互联网的行业里涌入了很多的程序员, 都在为互联网的发展添砖加瓦.程序员可以分为很多种,像Unix程序员.Windows程序员,或是C++程序员.Delphi程序员,等等.今天我们谈谈Web程序员,一名 ...

  8. MongoDB复制集之将现有的单节点服务器转换为复制集

    服务器情况:   现有的单节点 Primary     192.168.126.9:27017   新增的节点    Secondry  192.168.126.8:27017    仲裁节点     ...

  9. Sublime Text3常用插件以及安装方法(实用)

    Package Control组件在线安装 按Ctrl+`调出console(注:避免热键冲突) 粘贴以下代码到命令行并回车: import urllib.request,os; pf = 'Pack ...

  10. git命令实战之血泪记录

    注意: 本文章所写所有命令均在Git命令行窗口执行!非cmd窗口! 打开git命令行窗口步骤为:到项目根目录下执行bash命令行操作:右键点击Git Bash Here菜单,打开git命令窗口,不是c ...