当前位置:首页 > 行业动态 > 正文

如何用php编出图形验证码

要使用PHP生成图形验证码,可以使用GD库。以下是一个简单的示例:,,“ php, ,` ,,这段代码将生成一个包含4个随机大写字母的图形验证码。创建一个空白图像,然后为每个字符分配颜色。接下来,使用imagestring()`函数在图像上绘制字符。将生成的验证码存储在会话中,以便稍后进行验证。

生成图形验证码的PHP代码如下:

<?php
session_start();
// 创建一个100x30的图像
$image = imagecreatetruecolor(100, 30);
// 为图像分配颜色
$bgColor = imagecolorallocate($image, 255, 255, 255);
$textColor = imagecolorallocate($image, 0, 0, 0);
$lineColor = imagecolorallocate($image, 64, 64, 64);
// 填充背景色
imagefilledrectangle($image, 0, 0, 300, 50, $bgColor);
// 在图像上绘制文本
$code = '';
for ($i = 0; $i < 4; $i++) {
    $char = chr(rand(65, 90)); // 随机生成大写字母
    $code .= $char;
    imagestring($image, 5, 10 + $i * 20, rand(5, 10), $char, $textColor);
}
// 将验证码保存到session中
$_SESSION['captcha'] = $code;
// 在图像上绘制干扰线
for ($i = 0; $i < 2; $i++) {
    imageline($image, rand(10, 90), rand(10, 20), rand(10, 90), rand(20, 30), $lineColor);
}
// 输出图像
header('ContentType: image/png');
imagepng($image);
// 销毁图像资源
imagedestroy($image);
?>

这段代码首先创建了一个100×30像素的图像,然后为图像分配了背景色、文本颜色和干扰线颜色,接着,它在图像上绘制了4个随机的大写字母作为验证码,并将验证码保存到session中,它在图像上绘制了两条干扰线,并输出图像。

相关问题与解答:

问题1:如何修改上述代码以生成数字验证码?

答案:可以将生成字符的部分替换为以下代码:

$char = chr(rand(48, 57)); // 随机生成数字

问题2:如何修改上述代码以生成大小写字母和数字的组合验证码?

答案:可以将生成字符的部分替换为以下代码:

$char = chr(rand(48, 122)); // 随机生成数字、大写字母和小写字母
if (rand(0, 1)) {
    $char = strtoupper($char); // 随机转换为大写字母
}
0