当前位置:首页 > 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:

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

注意事项

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

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

js实现简单的验证码

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

相关文章

实现简单vue

实现简单vue

实现一个简单的 Vue.js 框架 Vue.js 的核心功能包括数据绑定、响应式系统和虚拟 DOM。以下是一个简化版的 Vue 实现,涵盖基本功能。 数据响应式系统 使用 Object.defin…

css3制作简单动画

css3制作简单动画

CSS3 制作简单动画的方法 CSS3 提供了多种方式制作动画,主要通过 transition、transform 和 animation 属性实现。以下是几种常见的实现方法。 使用 transit…

vue实现简单登录

vue实现简单登录

使用 Vue 实现简单登录功能 创建 Vue 项目 确保已安装 Vue CLI,通过以下命令创建新项目: vue create vue-login-demo 选择默认配置或手动配置(如 Babel…

vue修改简单实现

vue修改简单实现

Vue 修改简单实现 在 Vue 中实现简单的修改操作,通常涉及数据绑定、方法调用和响应式更新。以下是几种常见场景的实现方式: 修改数据并更新视图 Vue 的响应式系统会自动追踪数据变化并更新视图。…

简单的vue实现原理

简单的vue实现原理

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

vue怎么实现简单登录

vue怎么实现简单登录

Vue实现简单登录功能 使用Vue 2或Vue 3均可实现基础登录逻辑,以下是关键实现步骤: 创建登录表单组件 在Login.vue中设置用户名和密码输入框,绑定v-model数据: <te…