自己封装————验证码工具类————

下面分享的是我自己封装的验证码工具类,在平时的项目中会比较经常用到的工具类,目前封装的这个工具类简易版的,如果有需要的伙伴可以拿去用,当然我建议用之前在配置文件里增加一些选项信息

    //验证码宽度
    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']);
}
}


 

posted @ 2017-01-07 15:32  敲出别样人生  阅读(375)  评论(1编辑  收藏  举报