首页 > 编程 > PHP > 正文

PHP制作图形验证码代码分享

2020-03-22 17:56:55
字体:
来源:转载
供稿:网友
php
/*
* file:myvcode.html' target='_blank'>class.php
* 验证码类,类名Vcode
*/
class Vcode
{
private $width; /*验证码宽度*/
private $height; /*验证码高度*/
private $codeNum; /*验证码字符个数*/
private $checkCode; /*验证码字符*/
private $image; /*验证码资源*/
private $pixNum; /*绘制干扰点的个数*/
private $lineNum; /*绘制干扰线的条数*/ /*
*构造方法实例化验证码对象,并初始化数据
*@param int $width 设置默认宽度
*@param int $height 设置默认高度
*@param int $codeNum 设置验证码中的字符个数
*@param int $pixNum 设置干扰点的个数
*@param int $lineNum 设置干扰线的数量
*/
function __construct($width=80,$height=40,$codeNum=4,$pixNum=40,$lineNum=5)
{
$this- width = $width;
$this- height = $height;
$this- codeNum = $codeNum;
$this- pixNum = $pixNum;
$this- lineNum = $lineNum;
}
/*内部私有方法,创建图像资源*/
private function getCreateImage()
{
$this- image = imagecreatetruecolor($this- width, $this- height);
$white = imagecolorallocate($this- image,0xff,0xff,0xff);
imagefill($this- image, 0, 0, $white);
$black = imagecolorallocate($this- image,0,0,0);
imagerectangle($this- image, 0, 0, $this- width-1, $this- height-1, $black);
}
/*内部私有方法,绘制字符,去掉o0Llz和012*/
private function createCheckCode()
{
$code = '3456789abcdefghijkmnpqrstuvwxyABCDEFGHIJKMNPQRSTUVWXY';
$this- checkCode = "";
for($i=0; $i $this- codeNum;$i++)
{
$char = $code{rand(0,strlen($code) - 1)};
$this- checkCode .= $char;
$fontColor = imagecolorallocate($this- image, rand(0,128), rand(0,128),rand(0,128));
$fontSize = rand(3,5);
$x = rand(0,$this- width-imagefontwidth($fontSize));
$y = rand(0,$this- height-imagefontheight($fontSize));
imagechar($this- image, $fontSize, $x, $y, $char, $fontColor);
}
}
/*内部私有方法设置干扰元素*/
private function setDisturbColor()
{
/*绘制干扰点*/
for($i=0; $i $this- pixNum; $i++)
{
$color = imagecolorallocate($this- image, rand(0,255), rand(0,255), rand(0,255));
imagesetpixel($this- image, rand(1,$this- width-2), rand(1,$this- height-2), $color);
}
/*绘制干扰线*/
for($i=0; $i $this- lineNum; $i++)
{
$color = imagecolorallocate($this- image, rand(0,255), rand(0,255), rand(0,255));
imageline($this- image, rand(1,$this- width / 2), rand(1,$this- height / 2),
rand($this- width / 2,$this- width – 2), rand($this- height / 2,$this- height – 2), $color); }
}
/*开启session保存 利用echo 输出图像*/
function __toString()
{
$_SESSION['code'] = strtoupper($this- checkCode);
$this- getCreateImage();
$this- createCheckCode();
$this- setDisturbColor();
$this- outputImg();
}
/*内部私有方法输出图像*/
private function outputImg()
{
header("content-type:image/png");
imagepng($this- image);
}
/*析构方法,释放对象*/
function __destruct()
{
imagedestroy($this- image);
}
}
imgcode.php输出图像 session_start(); require_once('myvcode.class.php'); echo new Vcode(); test.html:同过img标签引用
img src="imgcode.php" 可以加一个a标签,用js实现换一张效果: /*局部刷新换验证码*/
function changeCode()
{
var imgcode = document.getElementById(‘code');
var change = document.getElementById(‘change');
change.onclick = function()
{
/*必须加后面的参数才能刷新*/
imgcode.src='code.php tm'+Math.random();
}
} code和change分别是img和a的idPHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表