jQuery插件实现静态HTML验证码校验

jQuery由美国人John Resig创建,它是一个快速、简洁的JavaScript库,提供了很多遍历函数,如each(fn)。jQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可。正是这些操作上的特点,用户可以方便地处理HTML文档、事件、实现动画效果,并且方便地为网站提供交互。如今,jQuery已经吸引了来自世界各地的众多JavaScript高手加入。

这里所要讲到的jQuery Real Person Plugin,就是一个完全由JavaScript编写而成的jQuery验证码插件。

jQuery Real Person Plugin主要实现了字母字母数字混合两种验证方式,可以有效地防止自动提交表单。其外观展示提供了定制功能,默认是6位字母,如图1所示。

根据需要,也可以定制8位长度的验证码,如图2所示。

或者是字母数字混合式的验证码,如图3所示。

此外,用户也可以对底部的文字进行定制,如图4所示。

看到这些各具特色而且功能强大的验证界面,我们能否自己也来实现呢?答案是肯定的。下面,通过循序渐进的讲解,对jQuery Real Person Plugin的验证过程进行分析。
第1步,使用这个验证功能之前,引入JavaScript、CSS文件。

<script type="text/JavaScript" src="Scripts/jquery-1.3.2.js"></script>
<script type="text/JavaScript" src="Scripts/jquery.realperson.js"></script>
<style type="text/css">@import "Styles/jquery.realperson.css";</style>

在上面的代码中,第1行引入jQuery类库,可以到官方网站载最新jQuery类库。第2行引入验证码插件类库jquery.realperson.js。第3行引入验证码样式文件jquery.realperson.css。网站界面如图5所示。

第2步,页面中放入文本框元素,也就是HTML部分。

<table>
<tr>
<td><input type="text" id="txtValidate" name="defaultReal"></td>
</tr>
<tr>
<td><asp:Button ID="btnSubmit" runat="server" Text="登录" /></td>
</tr>
</table>

在上面的代码中,第1行使用两行一列进行布局,一行用于存放文本框,一行用于存放登录按钮。第3行定义id=”txtValidate”的文本框,用于输入验证码。第6行定义id=”btnSubmit”的提交按钮,用于触发后台事件,从而登录系统。
第3步,页面初始化时,调用验证码插件,以便于初始化验证码显示。

<script>
$(document).ready(function () {
$("#txtValidate").realperson({ length: 5 });
}
);
</script>

在上面的代码中,第2行为页面加载时所进行的操作,相当于页面的onLoad事件。第3行调用验证码控件的接口,用于显示验证码。
第4步,核心代码分析。

/* 核心代码
@param target (jQuery) the input field
@param inst  (object) the current instance settings
@return (string) the additional content */
_generateHTML: function(target, inst) {
var text = '';
for (var i = 0; i < inst.settings.length; i++) {
text += CHARS.charAt(Math.floor(Math.random() *
(inst.settings.includeNumbers ? 36 : 26)));
}
 var html = '<div class="realperson-challenge"><div class="realperson-text">';
 for (var i = 0; i < DOTS[0].length; i++) {
 for (var j = 0; j < text.length; j++) {
 html += DOTS[CHARS.indexOf(text.charAt(j))][i] + ' ';
}
html += '\n';
}
html += '</div><div class="realperson-regen">' + inst.settings.regenerate +
'</div></div><input type="hidden" class="realperson-hash" name="' +
inst.settings.hashName.replace(/\{n\}/, target.attr('name')) +
'" value="' + this._hash(text) + '">';
return html;

在上面的代码中,第7~9行用于生成验证码随机字符。第12~22行用于把背景字符和随机字符组装成HTML代码,输出到浏览器。

通过上述剖析,可以看到,验证码对于密码安全具有十分重要的作用。联想到银行账户的安全问题,比如黑客通过其他途径获得了银行账户,然后打开其网上银行的登录界面。使用浏览器中查看源代码的方式,分析登录界面HTML代码,发现页面中没有验证码,也没有其他的安全设置,只使用了HTTP协议;黑客窃喜,于是就可以使用程序来模拟浏览器向银行服务器提交账户和密码。密码一般是6位的阿拉伯数字,正确密码的可能性就是10的6次方,也就是100万次。黑客会找一台高性能、高带宽的电脑,运行套取银行密码程序,假设这台电脑1秒钟能测试10个密码,10万秒钟(也就是27小时,一天左右)的时间就可以把所有的密码运行一遍,实际上黑客用不了那么长时间就已经窃取到了密码,银行帐号的钱也就会被转走。也就是说,若没有验证码,黑客使用套取银行密码程序,在一天左右的时间就能轻而易举地获得非法收入。

在实际应用中,汉字验证码也是比较常见的验证码,它的原理是:从一个汉字集合中随机抽选出几个汉字,生成图片以HTTP输出流到页面。如果客户端输入正确的汉字,则可以继续操作,否则禁制登录。中国上下五千年,文化博大精深,汉字数量达9万多,相对只有10个位数的数字验证码和26个字符的字母验证码,汉字验证码更具有安全性。因此,通过对验证码安全的研究,可以更加领略到中华文化的博大精深,原来密码验证也可以这样玩!

以上就是本文的全部内容,希望对大家的学习有所帮助。

(0)

相关推荐

  • JQuery实现简单验证码提示解决方案

    先看效果图: 要求:当输入框获得焦点时,自动显示验证图片. 代码如下(学习而已,仅供参考): 复制代码 代码如下: /***********************下是验证码对象*****************/ var Validation = {}; Validation.init = function(eleName,imageSrc){ this.image = imageSrc; $('#'+eleName).focusin(function(){ Validation.show(e

  • jQuery点击输入框显示验证码图片

    先看效果图: 要求:当输入框获得焦点时,自动显示验证图片. 代码如下(学习而已,仅供参考): /***********************下是验证码对象*****************/ var Validation = {}; Validation.init = function(eleName,imageSrc){ this.image = imageSrc; $('#'+eleName).focusin(function(){ Validation.show(eleName); })

  • PHP+jQuery 注册模块的改进(一):验证码存入SESSION

    需要修改的几个文件: ①register.php 生成随机数和加密值 把register.html改为register.php,并开启session: 把register.js中生成随机数的函数写在register.php中,并改用php方法 <?php session_start();?> .... <?php //生成随机数函数 function showval(){ $num = ""; for($i=0;$i<4;$i++){ $tmp = rand(1

  • jQuery实现一个简单的验证码功能

    在学习jQuery过程中,写的一个简单的验证码的小例子,记载下来,方便以后借鉴补充,源码如下: <!DOCTYPE html> <html> <head> <title></title> <style type="text/css"> div{ background-color:blue; width:200px; height:100px; font-size:35px; } </style> <

  • Jquery插件实现点击获取验证码后60秒内禁止重新获取

    通过jquery.cookie.js插件可以快速实现"点击获取验证码后60秒内禁止重新获取(防刷新)"的功能 效果图: 先到官网(http://plugins.jquery.com/cookie/)下载cookie插件,放到相应文件夹,代码如下: 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv=&qu

  • jquery实现手机发送验证码的倒计时代码

    复制代码 代码如下: var wait=60;//时间 function time(o,p) {//o为按钮的对象,p为可选,这里是60秒过后,提示文字的改变 if (wait == 0) { o.removeAttr("disabled"); o.val("点击发送验证码");//改变按钮中value的值 p.html("如果您在1分钟内没有收到验证码,请检查您填写的手机号码是否正确或重新发送"); wait = 60; } else { o.

  • jquery禁止输入数字以外的字符的示例(纯数字验证码)

    纯数字验证码的时候用到的,整理如下: 复制代码 代码如下: $('#mobile-vcode').unbind();$("#mobile-vcode").bind("keyup change",function () {    $(this).val($(this).val().replace(/\D/g,''));    if($(this).val().length==4){        /*ajax检测验证码是否正确,正确则激活按钮*/    }});

  • jQuery插件实现静态HTML验证码校验

    jQuery由美国人John Resig创建,它是一个快速.简洁的JavaScript库,提供了很多遍历函数,如each(fn).jQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可.正是这些操作上的特点,用户可以方便地处理HTML文档.事件.实现动画效果,并且方便地为网站提供交互.如今,jQuery已经吸引了来自世界各地的众多JavaScript高手加入. 这里所要讲到的jQuery Real Person Pl

  • jQuery插件Validation表单验证详解

    本文为大家分享了jQuery插件Validation表单验证的具体实现代码,供大家参考,具体内容如下 功能 1.对"姓名"的必填和长度至少是两位的验证. 2.对"电子邮件"的必填和是否为E-mail格式的验证. 3.对"网址"是否为url的验证. 4.对"你的评论"是否必填验证. 结果图 例子 <html> <head> <meta http-equiv="Content-Type&qu

  • jquery插件bootstrapValidator表单验证详解

    Bootstrap Validator是为Bootstrap3设计的一款表单验证jQuery插件,非常适合基于Bootstrap框架的网站. 看作者的github,这款插件已经不再更新了,而推荐使用FormValidation,不过现在还是先介绍一下BootstrapValidator的使用. 准备工作 BootstrapValidator文档地址:http://bv.doc.javake.cn/ 下载源码后,将其中的bootstrapValidator.min.css和bootstapVali

  • jquery插件制作 表单验证实现代码

    先下页面代码: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>&l

  • Jquery插件easyUi表单验证提交(示例代码)

    复制代码 代码如下: <form id="myForm" method="post">  <table align="center" style="width:400px;height:auto;margin-top: 20px">           <tr>                                           <td align="righ

  • Web开发者必备的12款超赞jQuery插件

    现在的jQuery插件很多,尽可以根据您 的项目要求来选择,不过也有一些插件很好用,几乎各种项目都能够用得上.这里就为您介绍12款开发中最常用的jQuery插件. 1. jQuery BBCode Editor 下载地址:http://www.w3theme.com/jquery-bbedit/ Bbcode简单易用,它是BBS.论坛.Blog等网络应用上的一种常用输入语法.jQuery BbCode Editor提供自定义设置,可以打造出很个性化的bbcode编辑器,它的源代码都可以根据需求灵

  • jQuery Validate插件实现表单验证

    jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求.该插件捆绑了一套有用的验证方法,包括 URL 和电子邮件验证,同时提供了一个用来编写用户自定义方法的 API.所有的捆绑方法默认使用英语作为错误信息,且已翻译成其他 37 种语言.更重要的是他是由jQuery 团队. jQuery UI 团队的主要开发人员Jörn Zaefferer 编写和维护的.具体我们可以访问 jQuery Validate 官网,下载

  • 从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件

    一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些许秘籍. 本文是介绍两个最常用的jQuery插件. 分别用于表单验证和自动完成提示(类似google suggest). 二.前言 研究别人的作品真是一件花时间而且痛苦的过程. 当然也和本人英文不好有关. 总觉得控件作者写了很多文档但是都不够系统, 需要深入研究很多的实例后才能了解作者的思路.所以学习和研究一个插件需要很高成本, 如果发现了Bug并修复需要

  • jQuery插件学习教程之SlidesJs轮播+Validation验证

    SlidesJs(轮播支持触屏)--官网(http://slidesjs.com) 1.简介 SlidesJs是基于Jquery(1.7.1+)的响应幻灯片插件.支持键盘,触摸,css3转换. 2.代码 <!doctype html> <head> <style> /* Prevents slides from flashing */ #slides { display:none; } </style> <script src="http:/

  • jQuery插件Validation快速完成表单验证的方式

    JQuery的Validation插件可以到http://plugins.jquery.com/上去下载.今天来分享一下,关于这个插件的使用. 简易使用 这第一种方式可谓是傻瓜式的使用,我们只需要按照validation定义好的规则就可以了.  •首先引入JQuery库和Validation插件:  <script type="text/javascript" src="jquery-2.2.4.min.js"></script> <s

随机推荐