当前位置:首页 > JavaScript

js 实现验证码

2026-04-03 22:53:32JavaScript

实现验证码功能

验证码通常用于防止自动化操作,如机器人提交表单。以下是使用JavaScript实现简单验证码的方法。

生成随机验证码

创建一个函数生成随机字母和数字组合的验证码:

function generateCaptcha() {
    const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
    let captcha = '';
    for (let i = 0; i < 6; i++) {
        const randomIndex = Math.floor(Math.random() * chars.length);
        captcha += chars[randomIndex];
    }
    return captcha;
}

显示验证码

将生成的验证码显示在页面上:

js 实现验证码

function displayCaptcha() {
    const captcha = generateCaptcha();
    document.getElementById('captchaDisplay').textContent = captcha;
    return captcha; // 返回用于验证
}

验证用户输入

检查用户输入的验证码是否正确:

function validateCaptcha(userInput, correctCaptcha) {
    return userInput === correctCaptcha;
}

完整示例

HTML部分:

js 实现验证码

<div id="captchaDisplay"></div>
<input type="text" id="userCaptcha" placeholder="输入验证码">
<button onclick="checkCaptcha()">验证</button>
<button onclick="refreshCaptcha()">刷新</button>
<p id="result"></p>

JavaScript部分:

let currentCaptcha = '';

window.onload = function() {
    currentCaptcha = displayCaptcha();
};

function refreshCaptcha() {
    currentCaptcha = displayCaptcha();
    document.getElementById('userCaptcha').value = '';
    document.getElementById('result').textContent = '';
}

function checkCaptcha() {
    const userInput = document.getElementById('userCaptcha').value;
    const isValid = validateCaptcha(userInput, currentCaptcha);

    const resultElement = document.getElementById('result');
    if (isValid) {
        resultElement.textContent = '验证码正确';
        resultElement.style.color = 'green';
    } else {
        resultElement.textContent = '验证码错误';
        resultElement.style.color = 'red';
    }
}

增强安全性

为了增加安全性,可以考虑以下改进:

  • 在服务器端进行最终验证
  • 添加扭曲文字或干扰线等视觉障碍
  • 使用Canvas绘制验证码图像
  • 设置验证码过期时间

Canvas绘制验证码

使用Canvas可以创建更复杂的验证码:

function drawCaptcha() {
    const canvas = document.getElementById('captchaCanvas');
    const ctx = canvas.getContext('2d');
    ctx.clearRect(0, 0, canvas.width, canvas.height);

    const captcha = generateCaptcha();
    ctx.font = '30px Arial';
    ctx.fillStyle = '#000';
    ctx.fillText(captcha, 10, 30);

    // 添加干扰线
    for (let i = 0; i < 5; i++) {
        ctx.strokeStyle = `rgb(${Math.random()*255},${Math.random()*255},${Math.random()*255})`;
        ctx.beginPath();
        ctx.moveTo(Math.random()*canvas.width, Math.random()*canvas.height);
        ctx.lineTo(Math.random()*canvas.width, Math.random()*canvas.height);
        ctx.stroke();
    }

    return captcha;
}

注意事项

  • 前端验证不能替代服务器端验证
  • 复杂验证码应考虑无障碍访问需求
  • 定期更新验证码生成算法防止被破解
  • 对于重要操作,建议使用更安全的验证方式如短信验证码

以上方法提供了基本的验证码实现,可根据具体需求进行调整和扩展。

标签: 验证码js
分享给朋友:

相关文章

php 实现验证码

php 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证码…

php实现验证码的识别

php实现验证码的识别

验证码识别的基本方法 验证码识别通常分为手动实现和第三方工具两种方式。手动实现需要图像处理和机器学习知识,而第三方工具则更快捷。 使用Tesseract OCR识别验证码 Tesseract是一个开…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: functio…

js实现原理

js实现原理

JavaScript 实现原理 JavaScript 是一种解释型语言,其实现原理涉及多个核心组件和运行机制,包括引擎、运行时环境、事件循环等。 引擎与解释执行 现代 JavaScript 引擎(如…

js实现上传图片

js实现上传图片

使用HTML5的File API实现图片上传 HTML5的File API允许通过JavaScript访问用户选择的文件。需要创建一个文件输入元素,并监听其change事件。 <input t…

js 实现页面刷新

js 实现页面刷新

使用 location.reload() location.reload() 是原生 JavaScript 提供的页面刷新方法。调用该方法会重新加载当前页面,相当于点击浏览器的刷新按钮。 // 基本…