当前位置:首页 > 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绘制验证码图形,添加干扰线和噪点增加识别难度。

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

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

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>

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

js实现图形验证码

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

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

相关文章

js实现验证码

js实现验证码

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

jquery验证码

jquery验证码

jQuery 验证码实现方法 验证码(CAPTCHA)用于防止自动化脚本提交表单。jQuery 可以与后端结合实现验证码功能。 前端生成和验证 使用 jQuery 生成简单的验证码: // 生成随…

php登录验证码实现

php登录验证码实现

验证码生成与显示 使用PHP的GD库生成验证码图片,并将验证码字符串存入Session以便后续验证。以下是一个基础实现示例: // 生成验证码 session_start(); $width = 1…

php验证码怎么实现

php验证码怎么实现

使用GD库生成验证码 PHP的GD库可以用于生成验证码图片。以下是实现步骤: 1. 创建画布并设置背景 $width = 100; $height = 30; $image = image…

php实现验证码注册

php实现验证码注册

生成验证码图片 使用 PHP 的 GD 库生成验证码图片,创建一个包含随机字符的图像。以下代码示例生成一个 4 位数字验证码: session_start(); $width = 120; $hei…

php如何实现验证码

php如何实现验证码

生成验证码图片 使用 PHP 的 GD 库创建验证码图片。通过 imagecreatetruecolor() 函数创建一个空白画布,设置背景色和文本颜色。利用 imagestring() 或 imag…