用php写一个好看的图形验证码
时间: 2023-09-18 15:15:47 浏览: 149
以下是一个用 PHP 生成好看的图形验证码的示例代码:
```php
<?php
session_start();
// 生成随机字符串
function generateCode($length = 6) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
// 生成验证码图片
$image = imagecreatetruecolor(120, 40);
$bgColor = imagecolorallocate($image, 255, 255, 255);
$textColor = imagecolorallocate($image, 0, 0, 0);
imagefilledrectangle($image, 0, 0, 120, 40, $bgColor);
$code = generateCode();
$_SESSION['captcha_code'] = $code;
// 将验证码字符串绘制到图片上
$font = 'arial.ttf';
imagettftext($image, 20, 0, 20, 30, $textColor, $font, $code);
// 输出图片给浏览器
header('Content-Type: image/png');
imagepng($image);
// 释放内存
imagedestroy($image);
?>
```
这段代码使用 `imagecreatetruecolor()` 函数创建了一个 120x40 的图片,并使用 `imagefilledrectangle()` 函数将背景色填充为白色。然后调用 `generateCode()` 函数生成一个 6 位随机字符串作为验证码,并将其保存到 `$_SESSION['captcha_code']` 变量中。接着使用 `imagettftext()` 函数将验证码字符串绘制到图片上,并输出图片给浏览器显示。最后使用 `imagedestroy()` 函数释放内存。注意,此示例代码需要安装 FreeType 扩展以支持 TrueType 字体。
阅读全文