当前位置:首页 > JavaScript

js实现图形验证码

2026-01-30 19:56:53JavaScript

实现图形验证码的步骤

生成随机字符串 使用Math.random()生成包含数字和字母的随机字符串,作为验证码的基础。

function generateRandomString(length) {
  const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  let result = '';
  for (let i = 0; i < length; i++) {
    result += chars.charAt(Math.floor(Math.random() * chars.length));
  }
  return result;
}

创建Canvas画布 通过HTML5 Canvas API绘制验证码图形,添加干扰线和噪点增加识别难度。

js实现图形验证码

function createCaptcha(canvasId, text) {
  const canvas = document.getElementById(canvasId);
  const ctx = canvas.getContext('2d');

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

  // 填充背景色
  ctx.fillStyle = '#f5f5f5';
  ctx.fillRect(0, 0, canvas.width, canvas.height);

  // 绘制文字
  ctx.font = '30px Arial';
  ctx.fillStyle = '#333';
  ctx.textAlign = 'center';
  ctx.textBaseline = 'middle';
  ctx.fillText(text, canvas.width/2, canvas.height/2);

  // 添加干扰线
  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();
  }

  // 添加噪点
  for(let i = 0; i < 100; i++) {
    ctx.fillStyle = `rgb(${Math.random()*255},${Math.random()*255},${Math.random()*255})`;
    ctx.fillRect(Math.random()*canvas.width, Math.random()*canvas.height, 1, 1);
  }
}

验证用户输入 将生成的验证码存储在变量中,与用户输入进行比较验证。

js实现图形验证码

let captchaText = generateRandomString(6);

// 初始化验证码
createCaptcha('captchaCanvas', captchaText);

// 验证函数
function validateCaptcha() {
  const userInput = document.getElementById('captchaInput').value;
  if(userInput === captchaText) {
    alert('验证码正确');
    return true;
  } else {
    alert('验证码错误');
    // 刷新验证码
    captchaText = generateRandomString(6);
    createCaptcha('captchaCanvas', captchaText);
    return false;
  }
}

HTML结构示例 创建基本的HTML结构,包含Canvas元素和输入框。

<canvas id="captchaCanvas" width="200" height="60"></canvas>
<input type="text" id="captchaInput" placeholder="输入验证码">
<button onclick="validateCaptcha()">验证</button>
<button onclick="refreshCaptcha()">刷新</button>

刷新验证码功能 提供刷新按钮让用户重新获取验证码。

function refreshCaptcha() {
  captchaText = generateRandomString(6);
  createCaptcha('captchaCanvas', captchaText);
}

标签: 验证码图形
分享给朋友:

相关文章

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

php验证码实现

php验证码实现

验证码实现方法 在PHP中实现验证码功能通常涉及生成随机字符串或数字,将其转换为图像,并通过会话(Session)进行验证。以下是几种常见的实现方式: 使用GD库生成图像验证码 GD库是PHP内置的…

php 实现验证码

php 实现验证码

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

php验证码的实现

php验证码的实现

PHP 验证码实现方法 使用 GD 库生成基础验证码 创建画布并生成随机字符串作为验证码内容: session_start(); $width = 120; $height = 40; $imag…

uniapp图形验证码

uniapp图形验证码

uniapp 图形验证码实现方法 在 uniapp 中实现图形验证码功能可以通过多种方式完成,以下是几种常见的实现方案: 使用第三方验证码服务 接入第三方验证码服务如极验、腾讯云验证码等,这些服务通…

php实现获取验证码

php实现获取验证码

使用GD库生成验证码 在PHP中,可以通过GD库来生成验证码图片。以下是一个简单的实现示例: <?php session_start(); $width = 120; $height = 4…