自己封装————验证码工具类————
Posted 敲出别样人生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自己封装————验证码工具类————相关的知识,希望对你有一定的参考价值。
下面分享的是我自己封装的验证码工具类,在平时的项目中会比较经常用到的工具类,目前封装的这个工具类简易版的,如果有需要的伙伴可以拿去用,当然我建议用之前在配置文件里增加一些选项信息
//验证码宽度 private $width; //验证码高度 private $height; //验证的个数 private $length; //干扰点个数 private $dots; //干扰点的类型 private $type; //干扰线个数 private $lines; //文字 private $font;
方便在项目中对验证码的要求进行更改,以方便项目逻辑的需求,而且验证码所选用的字体需要和验证码工具类放在同一目录下,否则就要在配置文件中修改字体的路径才能实现验证码的显示
//创建验证码工具类
class captcha{
//验证码的各种参数
//验证码宽度
private $width;
//验证码高度
private $height;
//验证的个数
private $length;
//干扰点个数
private $dots;
//干扰点的类型
private $type;
//干扰线个数
private $lines;
//文字
private $font;
//验证码属性的构造方法
public function __construct($arr=array()){
//将属性赋值
$this->width =isset($arr[‘width‘ ]) ? trim($arr[‘width‘ ]) : ‘270‘;
$this->height=isset($arr[‘height‘]) ? trim($arr[‘height‘]) : ‘30‘ ;
$this->length=isset($arr[‘length‘]) ? trim($arr[‘length‘]) : ‘4‘ ;
$this->dots =isset($arr[‘dots‘ ]) ? trim($arr[‘dots‘ ]) : ‘81‘ ;
$this->type =isset($arr[‘type‘ ]) ? trim($arr[‘type‘ ]) : ‘*‘ ;
$this->lines =isset($arr[‘lines‘ ]) ? trim($arr[‘lines‘ ]) : ‘5‘ ;
$this->font =isset($arr[‘font‘ ]) ? trim($arr[‘font‘ ]) : ‘/cambriab.ttf‘ ;
}
//创建验证码的方法
public function captcha(){
//创建画布
$img = imagecreatetruecolor($this->width, $this->height);
//填充颜色
//颜色资源
$color=imagecolorallocate($img, mt_rand(200,255), mt_rand(200,255), mt_rand(200,255));
//填充背景
imagefill($img, 0,0,$color);
//添加干扰点
for($i=0;$i<$this->dots;$i++){
//颜色资源
$dots_color=imagecolorallocate($img, mt_rand(150,200), mt_rand(150,200), mt_rand(150,200));
//插入干扰点
imagestring($img,mt_rand(1,5) , mt_rand(0,$this->width), mt_rand(0,$this->height), $this->type,$dots_color );
}
//添加干扰线
for($i=0;$i<$this->lines;$i++){
//颜色资源
$line_color=imagecolorallocate($img, mt_rand(150,200), mt_rand(150,200), mt_rand(150,200));
//插入干扰线
imageline($img, mt_rand(0,$this->width), mt_rand(0,$this->height), mt_rand(0,$this->width), mt_rand(0,$this->height), $line_color);
}
//首先获取验证码,然后插入验证文字
//文字高度
$size=mt_rand(18,20);
//获取验证码
$str=$this->captchastring();
for($i=0;$i<strlen($str);$i++){
//颜色资源
$str_color=imagecolorallocate($img, mt_rand(50,150), mt_rand(50,150), mt_rand(50,150));
//插入验证码
imagettftext($img, $size, mt_rand(-45,45),$this->width/($this->length+2)*($i+1), (($this->height-$size)/2)+$size, $str_color,$this->font , $str[$i]);
}
//将得到的验证码存入SESSION中,便于以后的验证码判断
@session_start();
$_SESSION[‘captcha‘]=$str;
//输出图片
header("content-type:image/png");
imagepng($img);
//清除资源
imagedestroy($img);
}
//获取随机的验证内容:A-Z,a-z,1-9
private function captchaString(){
//获取四个随机的字符串
$str="";
for($i=0;$i<$this->length;$i++){
switch(mt_rand(1,3)){
case 1 : $str .= chr(mt_rand(49,57));
break;
case 2 : $str .= chr(mt_rand(97,122));
break;
case 3 : $str .= chr(mt_rand(65,90));
break;
}
}
return $str;
}
//判断验证码
public static function checkCaptcha($captcha){
@session_start();
return strtoupper($captcha) === strtoupper($_SESSION[‘captcha‘]);
}
}
以上是关于自己封装————验证码工具类————的主要内容,如果未能解决你的问题,请参考以下文章