当前位置:首页 > PHP

php实现图形验证码

2026-02-14 05:31:30PHP

生成图形验证码

在PHP中,可以使用GD库生成图形验证码。GD库是一个开源的图像处理库,支持多种图像格式。

确保服务器已安装GD库,可以通过phpinfo()查看是否启用。以下是一个简单的图形验证码生成代码:

<?php
session_start();
$width = 100;
$height = 30;
$image = imagecreatetruecolor($width, $height);
$bgColor = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bgColor);

$chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charLength = strlen($chars);
$code = '';
for ($i = 0; $i < 4; $i++) {
    $code .= $chars[rand(0, $charLength - 1)];
}
$_SESSION['captcha'] = $code;

for ($i = 0; $i < 4; $i++) {
    $textColor = imagecolorallocate($image, rand(0, 150), rand(0, 150), rand(0, 150));
    imagettftext($image, rand(14, 18), rand(-30, 30), 10 + $i * 20, 20, $textColor, 'arial.ttf', $code[$i]);
}

for ($i = 0; $i < 5; $i++) {
    $lineColor = imagecolorallocate($image, rand(100, 200), rand(100, 200), rand(100, 200));
    imageline($image, rand(0, $width), rand(0, $height), rand(0, $width), rand(0, $height), $lineColor);
}

header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>

验证码使用

将上述代码保存为captcha.php,在HTML中通过img标签引用:

<img src="captcha.php" onclick="this.src='captcha.php?'+Math.random()" style="cursor:pointer;" title="点击刷新验证码">

验证码验证

在表单提交后,通过session比对验证码:

session_start();
if ($_POST['captcha'] !== $_SESSION['captcha']) {
    die('验证码错误');
}

增强安全性

为增加安全性,可以采取以下措施:

  • 增加验证码字符长度
  • 使用更复杂的字体和扭曲效果
  • 添加背景干扰元素
  • 限制验证码尝试次数
  • 设置验证码过期时间

使用第三方库

对于更复杂的需求,可以考虑使用以下第三方库:

php实现图形验证码

  • Gregwar/Captcha:提供更丰富的验证码生成功能
  • mewebstudio/Captcha:支持多种验证码类型
  • Intervention/image:提供更强大的图像处理能力

这些库可以通过Composer安装,提供更简便的API和更丰富的功能。

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

相关文章

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…

vue实现图形的拖动

vue实现图形的拖动

实现图形拖动的基本思路 在Vue中实现图形拖动功能,可以通过监听鼠标事件(mousedown、mousemove、mouseup)来动态更新图形的位置。结合Vue的响应式特性,可以轻松实现拖拽效果。…

css图形制作

css图形制作

CSS 图形制作基础 CSS 可以通过 border、transform、clip-path 等属性创建基本图形,无需依赖图片或 SVG。 矩形与正方形 通过 width 和 height 控制尺寸…

php实现手机验证码

php实现手机验证码

PHP实现手机验证码功能 手机验证码是常见的用户验证方式,通过短信或语音发送验证码到用户手机。以下是在PHP中实现手机验证码功能的步骤: 生成随机验证码 使用PHP的rand()或mt_rand()…

php验证码实现原理

php验证码实现原理

PHP验证码实现原理 验证码(CAPTCHA)用于区分人类用户和自动化程序,防止恶意攻击。PHP实现验证码通常涉及生成随机字符串、创建图像、干扰元素添加和会话存储。 生成随机字符串 使用PHP的随机…

php验证码怎么实现

php验证码怎么实现

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