当前位置:首页 > PHP

php实现变色验证码

2026-02-28 03:50:08PHP

生成随机验证码字符串

使用rand()mt_rand()生成随机数字/字母组合,例如4-6位字符。可结合array_merge()合并数字和字母数组,再通过shuffle()打乱顺序。

$chars = array_merge(range(0,9), range('a','z'), range('A','Z'));
shuffle($chars);
$code = implode('', array_slice($chars, 0, 6)); // 取6位

创建画布并设置背景

使用imagecreatetruecolor()创建指定大小的画布,用imagefill()填充背景色(通常为浅色)。

$width = 120;
$height = 40;
$image = imagecreatetruecolor($width, $height);
$bgColor = imagecolorallocate($image, 240, 240, 240);
imagefill($image, 0, 0, $bgColor);

添加干扰元素

通过循环绘制随机干扰线、点或弧线,增加识别难度。颜色使用随机值生成。

php实现变色验证码

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

输出变色验证码文字

每个字符使用不同的随机颜色,通过imagettftext()imagestring()写入画布。建议使用TTF字体增强效果。

$font = 'path/to/font.ttf'; // 需准备字体文件
for ($i=0; $i<strlen($code); $i++) {
    $color = imagecolorallocate($image, rand(0,150), rand(0,150), rand(0,150));
    imagettftext($image, 20, rand(-30,30), 10+$i*20, 30, $color, $font, $code[$i]);
}

输出图像并销毁资源

通过header()设置MIME类型后,用imagepng()输出图像,最后调用imagedestroy()释放内存。

php实现变色验证码

header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);

存储验证码用于校验

将生成的验证码存入$_SESSION,便于后续表单提交时比对。

session_start();
$_SESSION['captcha'] = $code;

注意事项

  • 字体文件需提前放置到项目目录
  • 确保PHP已安装GD库(通过phpinfo()检查)
  • 验证码复杂度可通过调整干扰元素数量、字符扭曲程度控制
  • 实际使用时应结合表单提交的Session验证逻辑

标签: 验证码php
分享给朋友:

相关文章

php实现队列

php实现队列

PHP实现队列的方法 队列是一种先进先出(FIFO)的数据结构,PHP可以通过多种方式实现队列功能。 使用数组模拟队列 PHP数组可以模拟队列的基本操作,通过array_push和array_shi…

php 实现购物车

php 实现购物车

PHP 实现购物车功能 购物车功能是电子商务网站的核心部分,可以通过 PHP 和 Session 或数据库来实现。以下是两种常见的实现方式: 使用 Session 存储购物车数据 Session 是…

php 实现文件下载

php 实现文件下载

实现文件下载的基本方法 使用 PHP 实现文件下载的核心是通过设置 HTTP 头部信息,强制浏览器将文件作为附件下载而非直接显示。以下是一个基础实现示例: $file_path = '/path/t…

php 实现秒杀

php 实现秒杀

PHP 实现秒杀的关键技术 秒杀系统需要解决高并发、超卖、性能瓶颈等问题。以下是实现秒杀的核心方案: 使用 Redis 预减库存 将商品库存提前加载到 Redis 中,通过原子操作保证库存准确性:…

php实现一个

php实现一个

PHP 实现一个简单的计算器 创建一个基本的计算器,支持加、减、乘、除运算。以下是一个完整的实现代码示例: <?php $result = ""; if ($_SERVER["REQUEST_…

php mvc 实现

php mvc 实现

PHP MVC 实现方法 MVC(Model-View-Controller)是一种设计模式,用于分离应用程序的逻辑、数据和界面。以下是实现PHP MVC框架的关键步骤。 目录结构 创建以下目录结构…