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

显示验证码

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

js实现简单的验证码

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>

初始化验证码

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

js实现简单的验证码

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. 考虑添加点击刷新功能提升用户体验

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

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

相关文章

jquery 验证码

jquery 验证码

jQuery 验证码实现方法 使用 jQuery 实现验证码功能可以通过多种方式完成,包括生成图形验证码、短信验证码或简单的逻辑验证码。以下是几种常见的实现方法: 图形验证码生成 图形验证码通常结合…

实现简单的vue

实现简单的vue

创建Vue项目 使用Vue CLI快速初始化项目,确保已安装Node.js和npm/yarn: npm install -g @vue/cli vue create my-vue-app cd my…

vue简单实现删除

vue简单实现删除

Vue 删除功能实现 使用 v-for 和 splice 方法删除数组元素 <template> <div> <ul> <li v-…

vue简单代码实现

vue简单代码实现

以下是一个基于 Vue 3 的简单代码实现示例,包含基础功能演示: 基础模板结构 <!DOCTYPE html> <html lang="en"> <head>…

vue实现简单登录验证

vue实现简单登录验证

实现登录表单基础结构 使用Vue的模板语法构建登录表单,包含用户名和密码输入框及提交按钮。表单需绑定v-model实现双向数据绑定,并监听submit事件。 <template> &…

制作简单css

制作简单css

基础CSS结构 CSS(层叠样式表)用于控制网页的样式和布局。一个简单的CSS文件通常包含选择器和声明块。选择器用于定位HTML元素,声明块包含属性和值,用于定义样式。 /* 选择器 */ body…