前后端交互--验证码的生成、校验与刷新

       在涉及到前后端交互的系统或者实际项目中,常常会遇到登录信息的校验处理。而出于安全性考虑,除了对所输入的明文密码进行加密外,其中验证码也是很必要的一项。而从验证码的校验上来说,可分为前端校验和后端校验。
       一是前端校验。向服务器端传送数据时,不需再有验证码这个字段,所有的生成、校验和刷新处理都由前端完成。但是这样安全性不高,并且在前端校验的意义不大;二是在后端校验。如果是在后端校验,那么验证码的生成、刷新以及校验工作全由后端人员完成,前端只需要将用户所输入的验证码传送到后端即可。至于到底用哪个方式更好,还是要根据实际需求来进行选择。如果是比较简单且不涉及重要个人信息处理的平台,可以选择在前端完成。
       下面就来说一下前端如何生成验证码以及完成校验和刷新操作。
1、首先在目标html文件中引入验证码生成逻辑处理文件checkCode.js

<script type="text/javascript" src="../js/checkCode.js"></script>

2、其body部分代码:

<!--验证码-->                          
    <div class="checkcodebox">
        <span class="tip">验&ensp;证&ensp;码:</span>
        <!--验证码输入所在文本框:maxlength可限制输入的验证码的位数-->
        <input type="text" id="checkcodein" placeholder ="请输入"  maxlength="4"/>|
        <!--验证码生成所在文本框-->
        <input type="text" id="checkcode">
        <!--注意这里的id名要与checkCode中的一致-->
    </div>

3、本页面script逻辑控制,点击验证码实现刷新。

<script type="text/javascript">
$("#checkcode").click(function(){
    //页面点击验证码位置,实现点击刷新(调用生成函数).
    createCode();
});
</script>

4、checkCode.js文件代码

var code; //在全局定义验证码      
//页面初始化加载时生成一个初始验证码     
window.onload = function() {  
    createCode();  
}  

//验证码的生成
function createCode() {  
    code = "";  
    var codeLength = 5; //验证码的长度     
    var checkCode = document.getElementById("checkCode");  
    var random = 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 += random[charIndex]; //根据索引取得随机数加到code上     
    }  
    checkCode.value = code; //把code值赋给验证码     
}  

5、在html文件或者是控制html文件脚本逻辑的文件中,在输入登录等相关信息之后,调用后台接口之前,校验验证码输入的正确性。

示例代码:
//校验验证码     
function validate() {  
    var inputCode = document.getElementById("checkcodein").value.toUpperCase(); //取得输入的验证码并转化为大写           
    if(inputCode.length <= 0) { //若输入的验证码长度为0     
        alert("请输入验证码!"); //则弹出请输入验证码     
    } else if(inputCode != code) { //若输入的验证码与产生的验证码不一致时     
        alert("验证码输入错误!"); //则弹出验证码输入错误     
        createCode(); //刷新验证码     
    } else { //输入正确时 
        //从url中获取班级编码的值
        var classcode_val = GetQueryString("classcode");

        //获取各项信息的值
        //姓名
        var studentName = $("#studentname").val();
        //身份证类型
        var idtype_val = $("#idtype option:selected").val();
        //身份证号
        var idno_val = $("#idno").val();
        //验证码
        var checkcode_val = $("#checkcodein").val();
        var count = 0;//设置count,保证即便有好几个值都没入的时候也只弹框一次,而不是次次弹框。
        if(studentName == ""||idtype_val == ""||idno_val==""){
             count++;
        }
        if(count != 0){
            alert("请补充完整个人信息!");
        }else{
            //准备参数
            var verifydata = {
                "classcode": classcode_val,
                "name":studentName,
                "idtype": idtype_val,
                "idno": idno_val,
                "stuflag":"new"
            }
            //调用数据库对登录信息做处理的接口所在函数。
              //verifySignFunction(verifydata); 
        }
    }  
}  

6、注:在调用数据库接口之后,在回调函数中,再次调用验证码生成函数,实现不论是否登录成功,验证码都刷新一次。
以上。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,057评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,497评论 18 139
  • 注:本文根据陈维贤文章【万字干货!核心用户获取和运营策略(内含多案例)】整理,如有侵权,立即删除;
    東刀阅读 470评论 0 3
  • 文/白素心 01 我们小区设有一处健身器材,每到夏天,小区里的老人和孩子便会聚集在此消夏避暑。随着秋天的到来,天气...
    素心成长阅读 1,084评论 10 14
  • “妈妈吹…妈妈吹…”小儿手指着着草丛中那一朵朵绒绒的小伞状的蒲公英,欢快的央求着。我蹲下来,轻轻地吹去,那些小伞立...
    张祝莉阅读 231评论 0 0