当前位置:首页 > JavaScript

js实现简单的验证码

2026-04-05 02:21:02JavaScript

实现简单验证码的步骤

生成随机验证码

使用 Math.random() 生成随机字符串,通常包含数字和字母组合:

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;
}

渲染验证码到页面

使用 Canvas 绘制验证码,增加干扰线或噪点提高安全性:

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

  // 绘制背景色
  ctx.fillStyle = '#f0f0f0';
  ctx.fillRect(0, 0, canvas.width, canvas.height);

  // 绘制验证码文本
  ctx.font = '30px Arial';
  ctx.fillStyle = '#000';
  ctx.fillText(captchaText, 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();
  }
}

验证用户输入

比较用户输入与生成的验证码(不区分大小写):

function validateCaptcha(inputValue, storedCaptcha) {
  return inputValue.toLowerCase() === storedCaptcha.toLowerCase();
}

完整示例

HTML 结构:

<canvas id="captchaCanvas" width="200" height="50"></canvas>
<input type="text" id="captchaInput" placeholder="输入验证码">
<button id="refreshCaptcha">刷新</button>
<button id="submitCaptcha">提交</button>
<p id="captchaResult"></p>

JavaScript 逻辑:

js实现简单的验证码

let currentCaptcha = generateCaptcha();

document.addEventListener('DOMContentLoaded', () => {
  drawCaptcha(currentCaptcha);

  document.getElementById('refreshCaptcha').addEventListener('click', () => {
    currentCaptcha = generateCaptcha();
    drawCaptcha(currentCaptcha);
  });

  document.getElementById('submitCaptcha').addEventListener('click', () => {
    const userInput = document.getElementById('captchaInput').value;
    const resultElement = document.getElementById('captchaResult');

    if (validateCaptcha(userInput, currentCaptcha)) {
      resultElement.textContent = '验证成功!';
      resultElement.style.color = 'green';
    } else {
      resultElement.textContent = '验证失败,请重试!';
      resultElement.style.color = 'red';
      currentCaptcha = generateCaptcha();
      drawCaptcha(currentCaptcha);
    }
  });
});

增强安全性建议

  • 服务端二次验证:前端验证可被绕过,重要操作需在服务端再次验证
  • 增加过期时间:设置验证码有效期(如5分钟)
  • 限制尝试次数:防止暴力破解
  • 使用更复杂图形:扭曲文字、背景干扰等

这种方法实现了基础的前端验证码功能,适合简单场景使用。对于高安全需求,建议结合后端验证机制。

标签: 验证码简单
分享给朋友:

相关文章

php实现验证码的识别

php实现验证码的识别

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

vue  简单菜单实现

vue 简单菜单实现

实现简单菜单的步骤 在 Vue 中实现一个简单的菜单,可以通过以下方法完成: 使用 v-for 动态渲染菜单项 在 Vue 的模板中,使用 v-for 遍历菜单数据,动态生成菜单项。 <…

vue实现简单弹幕效果

vue实现简单弹幕效果

实现基础弹幕效果 在Vue中实现弹幕效果需要结合CSS动画和动态数据渲染。以下是一个基础实现方案: 模板部分 <template> <div class="danmu-con…

简单网页制作css

简单网页制作css

基础CSS结构 CSS(层叠样式表)用于控制网页的样式和布局。一个基础的CSS文件通常包含选择器和属性声明块。例如: body { font-family: Arial, sans-seri…

php实现简单购物车

php实现简单购物车

PHP实现简单购物车 购物车功能是电商网站的核心部分,以下是一个基于PHP和Session的简单购物车实现方案: 初始化购物车 在PHP脚本开始处初始化购物车Session: session_st…

php 简单框架实现

php 简单框架实现

实现一个简单的 PHP 框架 以下是一个基础 PHP 框架的实现思路,包含路由、控制器和视图的核心功能。框架结构清晰,适合学习或小型项目。 目录结构 /app /controllers…