JS 验证码功能的三种实现方式

yizhihongxing

下面为您讲解JS验证码功能的三种实现方式的完整攻略。

方式一:纯前端方法生成

实现过程

  1. 在HTML页面中添加验证码输入框和一个生成验证码的按钮;
  2. JS随机生成一个包含数字和字母的随机字符串并将其绑定到验证码文本框上;
  3. 当用户输入验证码并提交时,将输入的验证码与生成的验证码进行比较,判断验证码是否正确。

代码示例

HTML部分:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>JS验证码示例</title>
</head>
<body>
    <p>请输入验证码:</p>
    <input type="text" id="code-input" placeholder="验证码">
    <button onclick="createCode()">生成验证码</button>
    <button onclick="verifyCode()">提交</button>
</body>
</html>

JS部分:

var code; //存放生成的验证码
function createCode() {
    //随机生成一个包含数字和字母的随机字符串
    code = '';
    var codeLength = 4; //验证码长度
    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','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 index = Math.floor(Math.random() * 62); //取得随机数的索引(0~35)
        code += selectChar[index]; //根据索引取得随机数加到code上
    }
    document.getElementById('code-input').value = code; //把code值赋给验证码文本框
}
function verifyCode() {
    //获取用户输入的验证码并与生成的验证码进行比较
    var inputCode = document.getElementById('code-input').value;
    if(inputCode.length <= 0) {
        alert('请输入验证码!');
    } else if(inputCode.toUpperCase() != code.toUpperCase()) {
        alert("验证码输入有误!");
        createCode();//刷新验证码
    }else {
        alert('验证码正确!');
    }
}

方式二:结合后端API生成

实现过程

  1. 后端提供生成验证码的API;
  2. 在HTML页面中添加验证码输入框和一个生成验证码的按钮;
  3. 当用户点击生成验证码的按钮时,调用后端API生成验证码并返回到页面上进行展示;
  4. 当用户输入验证码并提交时,将输入的验证码传递给后端API进行比较,判断验证码是否正确。

代码示例

HTML部分和方式一相同。

JS部分:

function createCode() {
    //调用后端API生成验证码并返回到页面上
    var img = document.createElement("img");
    img.src = "http://www.example.com/getCode"; //调用后端API
    document.getElementById("code-input").parentNode.insertBefore(img, document.getElementById("code-input"));
}
function verifyCode() {
    //获取用户输入的验证码并传递给后端API进行比较
    var inputCode = document.getElementById('code-input').value;
    var xhr = new XMLHttpRequest();
    xhr.open("GET", "http://www.example.com/checkCode?code=" + inputCode, true); //调用后端API
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 && xhr.status == 200) {
            if(xhr.responseText == "true") {
                alert("验证码正确!");
            } else {
                alert("验证码输入有误!");
                createCode();//刷新验证码
            }
        }
    }
    xhr.send();
}

方式三:HTML5的canvas绘图技术生成

实现过程

  1. 在HTML页面中添加一个canvas标签和一个生成验证码的按钮;
  2. JS使用HTML5的canvas绘图技术随机生成一个包含数字和字母的随机字符串并在canvas中进行绘制;
  3. 当用户输入验证码并提交时,将输入的验证码与生成的验证码进行比较,判断验证码是否正确。

代码示例

HTML部分:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>HTML5Canvas验证码示例</title>
</head>
<body>
    <p>请输入验证码:</p>
    <input type="text" id="code-input">
    <br>
    <canvas id="code-canvas" width="120" height="30"></canvas>
    <button onclick="createCode()">生成验证码</button>
    <button onclick="verifyCode()">提交</button>
</body>
</html>

JS部分:

var code; //存放生成的验证码
var canvas = document.getElementById('code-canvas'); //获取canvas元素
var ctx = canvas.getContext('2d'); //获取画布上下文
ctx.font = 'bold 24px Arial'; //设置字体

function createCode() {
    //随机生成一个包含数字和字母的随机字符串
    code = '';
    var codeLength = 4; //验证码长度
    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','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 index = Math.floor(Math.random() * 62); //取得随机数的索引(0~35)
        code += selectChar[index]; //根据索引取得随机数加到code上
    }
    //在canvas中绘制验证码
    ctx.clearRect(0,0,canvas.width,canvas.height); //清除画布
    ctx.strokeText(code,canvas.width/2-30,canvas.height/2+10);
}
function verifyCode() {
    //获取用户输入的验证码并与生成的验证码进行比较
    var inputCode = document.getElementById('code-input').value;
    if(inputCode.length <= 0) {
        alert('请输入验证码!');
    } else if(inputCode.toUpperCase() != code.toUpperCase()) {
        alert("验证码输入有误!");
        createCode();//刷新验证码
    }else {
        alert('验证码正确!');
    }
}

createCode(); //初始自动生成验证码

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS 验证码功能的三种实现方式 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 深入理解es6块级作用域的使用

    深入理解 ES6 块级作用域的使用攻略 ES6 引入了块级作用域的概念,使用块级作用域可以有效地避免变量提升等问题,提高了代码的可读性和可维护性。本文将深入讲解 ES6 块级作用域的使用,包含以下内容: 块级作用域的概念 如何定义块级作用域 块级作用域的作用 块级作用域的示例 块级作用域的概念 在 ES6 之前,JavaScript 只有全局作用域和函数作用…

    JavaScript 2023年6月11日
    00
  • 关于javascript中dataset的问题小结

    以下是关于JavaScript中dataset的问题的小结攻略: 什么是dataset dataset是一种HTML5 DOM API,在JavaScript中用于获取或设置HTML元素的自定义属性。这些自定义属性的名字都是以data-为前缀。 使用方法 获取dataset属性值 在JavaScript中,可以使用以下方式获取一个元素的dataset属性值:…

    JavaScript 2023年6月10日
    00
  • JavaScript学习历程和心得小结

    JavaScript学习历程和心得小结 学习历程 我在学习JavaScript的过程中,主要通过以下三个步骤逐渐掌握了这门编程语言: 理解基本语法和概念 在学习JavaScript的初期,我通过阅读《JavaScript高级程序设计》等书籍,对JavaScript的基本语法和概念进行了学习。这些内容包括变量、数据类型、运算符、流程控制语句、函数等基础知识。 …

    JavaScript 2023年5月18日
    00
  • JavaScript打开word文档的实现代码(c#)

    为了详细讲解“JavaScript打开word文档的实现代码(c#)”的完整攻略,我将会分为以下几个部分进行阐述: 相关基础知识介绍 实现思路及步骤 示例说明 结语 1. 相关基础知识介绍 在介绍如何实现JavaScript打开word文档的实现代码(c#)之前,我们需要了解以下两个基础知识: 1.1 ActiveXObject对象 ActiveXObjec…

    JavaScript 2023年5月27日
    00
  • Object.defineProperty()函数之属性描述对象

    我们来详细讲解一下“Object.defineProperty()函数之属性描述对象”。 属性描述对象介绍 在JavaScript中,一个对象的属性除了具有值(value)外,还可以具有其它的一些特性,例如它是否可遍历(enumerable)、是否可修改(writable)等。这些特性以属性描述对象(property descriptor)的形式来表示,通过…

    JavaScript 2023年5月27日
    00
  • 详解js访问对象的属性和方法

    我很乐意为您提供关于“详解js访问对象的属性和方法”的完整攻略。 什么是对象 在JavaScript中,对象是对于某些实体的数据表示。 例如,一个人是一个对象,它可能会有一个名字,年龄和地址。 一本书也可以是一个对象,它会有一个书名,作者和 ISBN 号。 我们可以使用对象的属性和方法访问和操作这些数据。 如何访问对象的属性 如果你有一个 JavaScrip…

    JavaScript 2023年5月27日
    00
  • JavaScript实现同步于本地时间的动态时间显示方法

    这里是“JavaScript实现同步于本地时间的动态时间显示方法”的完整攻略。 1. 前言 在编写Web应用程序时,经常需要展示当前时间。如果使用静态时间,很可能无法与用户所在的时区同步,造成不必要的困扰。因此,我们需要一个动态时间显示方法,它可以动态地显示本地时间,并支持用户所在时区的变化。 2. 实现方法 在实现动态时间显示方法时,我们需要使用JavaS…

    JavaScript 2023年5月27日
    00
  • js之encodeURI、encodeURIComponent、decodeURI、decodeURIComponent

    1. encodeURI与encodeURIComponent encodeURI和encodeURIComponent都是用于对 url 进行编码的方法,它们可以将字符串编码为 URI(Uniform Resource Identifier, 统一资源标示符)格式,使其具有以下特点:- 可以在所有计算机和网络设备上使用- 能够进行全球化字符集的支持(包括的…

    JavaScript 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部