php生成随机验证码图片
时间: 2023-07-26 17:07:40 浏览: 122
随机验证码图片生成
以下是一个简单的 PHP 代码示例来生成随机验证码图片:
```php
<?php
// 开启session
session_start();
// 定义验证码字符集合
$chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
// 定义验证码长度
$length = 4;
// 创建画布
$img = imagecreatetruecolor(100, 30);
// 定义画布背景颜色
$bg_color = imagecolorallocate($img, 255, 255, 255);
// 填充画布背景颜色
imagefill($img, 0, 0, $bg_color);
// 生成验证码字符串
$code = '';
for ($i = 0; $i < $length; ++$i) {
$code .= $chars[mt_rand(0, strlen($chars) - 1)];
}
// 将验证码存入session
$_SESSION['captcha_code'] = $code;
// 将验证码绘制到画布上
$color = imagecolorallocate($img, 0, 0, 0);
imagestring($img, 5, 20, 8, $code, $color);
// 添加干扰线条
for ($i = 0; $i < 3; ++$i) {
$line_color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
imageline($img, mt_rand(0, 100), mt_rand(0, 30), mt_rand(0, 100), mt_rand(0, 30), $line_color);
}
// 添加干扰点
for ($i = 0; $i < 50; ++$i) {
$point_color = imagecolorallocate($img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
imagesetpixel($img, mt_rand(0, 100), mt_rand(0, 30), $point_color);
}
// 输出图片
header('Content-Type: image/png');
imagepng($img);
// 销毁画布
imagedestroy($img);
?>
```
在上面的示例中,我们使用了 `imagecreatetruecolor()` 函数来创建一个 100x30 大小的画布,使用 `imagefill()` 函数填充了背景颜色,使用 `imagestring()` 函数将验证码字符串绘制到画布上,并使用 `imageline()` 和 `imagesetpixel()` 函数添加了一些干扰线条和干扰点。最后,我们使用 `header()` 函数设置输出类型为 png 格式,并使用 `imagepng()` 函数将画布输出到浏览器上。生成的验证码字符串会存储在 `$_SESSION['captcha_code']` 变量中,可以用于后续的验证。
阅读全文