PHP生成简单的验证码实例。
验证码图片的生成是验证码功能的核心,需要生成一个随机字符,并将其渲染为图像展示给用户。PHP中可以使用GD库来生成验证码图片。
GD库是一种用于动态创建图像的PHP扩展,它提供了多种函数可以用于创建图像、修改图像、保存图像等操作,通过GD库可以很方便地创建验证码图片。
使用GD生成验证码步骤:
1、创建图片大小,背景颜色。
2、生成随机字符串,一般是4~6位之间。
3、将生成的随机字符串加入到图片中。
4、生成干扰点和干扰线等。
验证码代码实例
<?php
session_start();
Header("Content-type: image/PNG");
// 验证码图片的长宽
$width = 120;
$height = 50;
// 创建图片
$img = imagecreate($width,$height);
// 定义背景,随机背景色
imagecolorallocate($img,rand(200,255),rand(200,255),rand(200,255));
// 定义验证码长度
$codelen = 4;
// 字体文件
$font = 'Arial-Narrow.ttf';
// 验证码字符串库
$chars = '346789ABCDEFGHJKLMNPQRTUVWXY';
// 验证码字符串
$randCode = '';
$_x = $width / $codelen;
$_y = $height / 2;
for($i=0;$i<$codelen;$i++){
// 获取随机字符
$code = substr($chars, rand(0, strlen($chars) - 1), 1);
$randcode .= $code;
// 随机字符串颜色
$fontcolor = imagecolorallocate($img, rand(1,120), rand(1,120), rand(1,120));
// 随机字符串加入图片
imagettftext($img,24,rand(-30,30),$_x*$i+rand(3,6),$_y+rand(0,24),$fontcolor,$font,$code);
}
//生成干扰点
for($i=0;$i<=$width;$i++){
$pointcolor = imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255));//点的颜色
imagesetpixel($img,rand(0,$width-1),rand(0,$height-1),$pointcolor);// 水平地画一串像素点
}
//生成干扰线
for ($i=0;$i<=$codelen;$i++){
$linecolor = imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255));//线的颜色
imageline($img,rand(0,$width),rand(0,$height),rand(0,$width),rand(0,$height),$linecolor);//画一条线段
}
// 写入SESSION
$_SESSION['captcha'] = strtoupper($randCode);
// 显示图片
ImagePNG($img);
// 释放图片资源
ImageDestroy($img);
exit;
目前有 0 条评论