当前位置:首页 > JavaScript

js实现简单的验证码

2026-01-31 10:15:49JavaScript

实现简单的验证码功能

验证码通常用于防止自动化脚本提交表单。以下是一个基于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;
}

显示验证码

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

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

验证用户输入

比较用户输入与生成的验证码:

function validateCaptcha() {
  const userInput = document.getElementById('captcha-input').value;
  const actualCaptcha = document.getElementById('captcha-display').textContent;

  if (userInput === actualCaptcha) {
    alert('验证码正确');
    return true;
  } else {
    alert('验证码错误');
    displayCaptcha(); // 刷新验证码
    return false;
  }
}

HTML结构示例

<div id="captcha-display"></div>
<input type="text" id="captcha-input" placeholder="输入验证码">
<button onclick="validateCaptcha()">提交</button>
<button onclick="displayCaptcha()">刷新验证码</button>

初始化验证码

页面加载时显示初始验证码:

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

增加干扰线(可选)

为增强安全性,可以在Canvas上绘制验证码并添加干扰线:

function drawCaptcha() {
  const canvas = document.getElementById('captcha-canvas');
  const ctx = canvas.getContext('2d');
  const captcha = generateCaptcha();

  // 清空画布
  ctx.clearRect(0, 0, canvas.width, canvas.height);

  // 绘制验证码文本
  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;
}

对应的HTML:

js实现简单的验证码

<canvas id="captcha-canvas" width="150" height="50"></canvas>

注意事项

  1. 前端验证码主要用于用户体验,不能替代服务器端验证
  2. 实际应用中应将验证码与服务器Session关联
  3. 可以增加验证码有效期限制
  4. 考虑添加点击刷新功能提升用户体验

这种实现方式适合基础需求,对于更高安全要求应考虑使用专业验证码服务或后端生成图形验证码。

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

相关文章

vue实现简单表格

vue实现简单表格

使用 Vue 实现简单表格 Vue 提供了多种方式实现表格功能,以下是基于 Vue 3 的两种常见方法: 基础表格实现 通过 v-for 指令循环渲染表格数据: <template&…

js 实现验证码

js 实现验证码

实现验证码的 JavaScript 方法 生成随机验证码 验证码通常由随机字符(数字、字母或混合)组成。以下代码生成一个 6 位随机验证码(数字和字母混合): function generateCa…

vue简单实现picker效果

vue简单实现picker效果

Vue 实现 Picker 效果 在 Vue 中实现 Picker 效果可以通过自定义组件或使用第三方库完成。以下是两种常见方法: 自定义滚动选择器 使用原生滚动行为实现 Picker 效果,适用于…

vue轮播图简单实现

vue轮播图简单实现

使用 Vue 实现轮播图 以下是一个基于 Vue 3 的简单轮播图实现方法,无需依赖第三方库。 基础结构 在 Vue 单文件组件中,通过 v-for 渲染图片列表,并用 CSS 控制切换效果。 &…

简单的vue实现原理

简单的vue实现原理

Vue 的实现原理 Vue 的核心实现原理主要包括响应式系统、虚拟 DOM 和模板编译。以下是这些核心概念的简要说明: 响应式系统 Vue 通过 Object.defineProperty(Vue…

简单css制作

简单css制作

CSS 基础语法 CSS(层叠样式表)用于控制网页的样式和布局。基本语法由选择器和声明块组成: 选择器 { 属性: 值; } 例如: p { color: blue; font-siz…