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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

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