非常实用的php验证码类
来源: 阅读:1139 次 日期:2016-08-22 15:24:56
温馨提示: 小编为您整理了“非常实用的php验证码类”,方便广大网友查阅!

本文实例为大家分享了php验证码类,供大家参考,具体内容如下

/**

*

* @author Administrator

*

*/

class ValidateCode{

private $width;

private $height;

private $codeNum;

private $img_resouce;

private $disturbColorNum;

private $checkCode;

function __construct($width=80,$height=20,$codeNum=4) {

$this->width=$width;

$this->height=$height;

$this->codeNum=$codeNum;

$this->checkCode=$this->CreateCheckCode();

$number=floor($width*$height/25);

if ($number>240-$codeNum) {

$this->disturbColorNum=240-$codeNum;

}else{

$this->disturbColorNum=$number;

}

}

public function showImage($fontpath='') {

//创建图像背景

$this->Img_resouce();

//var_dump($img_resouce);

//设置干扰元素

$this->setDistructcolor();

//向图像中随机画出文本

$this->outputtext($fontpath);

//输出图像

$this->outputimage();

}

/**

*

*获取随机创建的验证码

*/

public function getCheckCode(){

}

private function Img_resouce(){

//创建一个真彩图像

$this->img_resouce=imagecreatetruecolor($this->width,$this->height);

//随机设置图像背景

$backcolor=imagecolorallocate($this->img_resouce,rand(225,255),rand(225,255),rand(225,255));

//填充颜色

imagefill($this->img_resouce, 0, 0, $backcolor);

//设置边框背景

$border=imagecolorallocate($this->img_resouce, 0,0,0);

//画一个矩形

imagerectangle($this->img_resouce,0,0,$this->width-1,$this->height-1,$border);

}

private function setDistructcolor(){

//绘画干扰点

for ($i = 0; $i <$this->disturbColorNum; $i++) {

imagesetpixel($this->img_resouce, rand(1, $this->width-2), rand(1, $this->height-2), rand(0,255));

}

//绘画干扰线

for ($j = 0; $j <3; $j++) {

$linecolor=imagecolorallocate($this->img_resouce,rand(0,255),rand(0,255),rand(0,255));

imagearc($this->img_resouce, rand(0,$this->width), rand(0,$this->height),

rand(10, 225), rand(20, 150),

55, 44, $linecolor);

}

}

private function CreateCheckCode(){

$code='23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKMNPQRSTUVWXYZ';

$string='';

for ($i = 0; $i < $this->codeNum; $i++) {

$char=$code{rand(0, strlen($code)-1)};

$string.=$char;

}

return $string;

}

private function outputtext($fontpath=''){

for ($i = 0; $i < $this->codeNum; $i++) {

$fontcolor=imagecolorallocate($this->img_resouce, rand(0,128), rand(0, 128), rand(0, 128));

if ($fontpath=='') {

$fontsize=rand(3, 5);

$x=floor($this->width/$this->codeNum)*$i+3;

$y=rand(0, $this->height-20);

imagechar($this->img_resouce, $fontsize, $x, $y, $this->checkCode{$i}, $fontcolor);

}else{

$fontsize=rand(12, 16);

$x=floor(($this->width-8)/$this->codeNum)*$i+8;

$y=rand($fontsize, $this->height-15);

imagettftext($this->img_resouce,$fontsize,rand(-45,45),$x,$y,$fontcolor,fontpath,$this->checkCode{$i});

}

}

}

private function outputimage() {

if (imagetypes() & IMG_GIF) {

header("Content-type: image/gif");

imagegif($this->img_resouce);

}else if(imagetypes() & IMG_JPEG) {

header("Content-type: image/jpeg");

imagejpeg($this->img_resouce);

}else if(imagetypes() & IMG_PNG) {

header("Content-type: image/png");

imagepng($this->img_resouce);

}else {

echo "PHP不支持的类型";

}

}

private function __destruct(){

imagedestroy($this->img_resouce);

}

}

?>

以上就是本文的全部内容,希望对大家的学习有所帮助。

更多信息请查看 网络编程
手机网站地址: 非常实用的php验证码类
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2026上岸·考公考编培训报班

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们| 联系我们| 人才招聘| 网站声明| 网站帮助| 非正式的简要咨询| 简要咨询须知| 新媒体/短视频平台| 手机站点| 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65099533/13759567129 获取招聘考试信息及咨询关注公众号:
咨询QQ:1093837350(9:00—18:00) 版权所有:
云南网警报警专用图标
Baidu
map