| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
openocode
10年前发布

php验证码类

<?   /**    *   验证码类    *   @author  firerat    *   @email    lukai_rat@163.com    *   @time     Feb 16  2011 15:28    *   @lastmodify Feb 16  2011 15:28    */    class verifycode{          //image source          private  $im;          //图片宽度          private  $w;          //图片高度          private  $h;          //验证字符集合          private  $text;          //字符数          private $length;          //字体          private  $font = array();          //字体大小          private  $fontsize = array();          //字体颜色          private  $fontcolor = array();          //字体的偏转角度          private  $angel = array();          //背景色          private  $backgroundcolor = array();          //背景图片          private $backgroundimage = array();          //坐标-x          private $x  ;          //坐标-y          private $y  ;          //验证码存放的字段          private $checkcodefield ;            /**           * 构造函数           *           */          public function __construct(){            //图片宽度            $this->w = 500 ;            //图片高度            $this->h = 600;            //验证字符            $this->text = '0123456789qwertyuiopasdfghjklzxcvbnm';            //字体            $this->font = array(                   'C:\\WINDOWS\\Fonts\\Ming Imperial.TTF',                   'C:\\WINDOWS\\Fonts\\latha.TTF',                   'C:\\WINDOWS\\Fonts\\ARIALNBI.TTF',                   'C:\\WINDOWS\\Fonts\\GOTHICBI.TTF'                  );            //字符数            $this->length = '4';            //字体大小            $this->fontsize = array(50,60,70);            //字体颜色            $this->fontcolor = array(                   array('red'=>0x14, 'green'=>0x37,'blue'=>0xad),                   array('red'=>0x6e, 'green'=>0x86,'blue'=>0xd6),                   array('red'=>0x2c, 'green'=>0x40 ,'blue'=>0x81),                   array('red'=>0x06, 'green'=>0x1f ,'blue'=>0x70),                   array('red'=>0x14, 'green'=>0x37 ,'blue'=>0xad),                   array('red'=>0x57, 'green'=>0x79 ,'blue'=>0xc0)            );            //字体的偏转角度            $this->angel = array(2,4,8,-2,-4,-8);            //背景色            $this->backgroundcolor = array(                    array('red'=>0x14, 'green'=>0x37,'blue'=>0xad),                    array('red'=>0x6e, 'green'=>0x86,'blue'=>0xd6),                    array('red'=>0x2c, 'green'=>0x40 ,'blue'=>0x81),                    array('red'=>0x06, 'green'=>0x1f ,'blue'=>0x70),                    array('red'=>0x14, 'green'=>0x37 ,'blue'=>0xad),                    array('red'=>0x57, 'green'=>0x79 ,'blue'=>0xc0)            );              //背景图片            $this->backgroundimage = array(                   'F:\\city_photo\\city_photo\\1\\1807141.jpg',                   'F:\\city_photo\\city_photo\\1\\1807141.jpg',                   'F:\\city_photo\\city_photo\\1\\1807141.jpg',                   'F:\\city_photo\\city_photo\\1\\1807141.jpg',                   'F:\\city_photo\\city_photo\\1\\1807141.jpg'            );            //坐标轴X            $this->x = 100 ;            //坐标轴Y            $this->y = 300 ;            //验证码存放的字段            $this->checkcodefield = 'checkcode';          }            /* 创建背景           *           * @return $im           */          public function createImgae(){             //$this->im = imagecreatetruecolor($this->w,$this->h);             $key = array_rand($this->backgroundimage);             $this->im = imagecreatefromjpeg( $this->backgroundimage[$key]);               return $this->im;          }            /* 创建背景的索引色           *           *  @return           */          public function createBackgroundColor(){             //获取背景随机颜色组key             $rgbGroupKey = array_rand($this->backgroundcolor);             $red = $this->backgroundcolor[$rgbGroupKey]['red'];             $green = $this->backgroundcolor[$rgbGroupKey]['green'];             $blue = $this->backgroundcolor[$rgbGroupKey]['blue'];               //返回颜色索引             return imagecolorallocate($this->im, $red, $green, $blue);          }            /* 获取随机字符,并将字符存放发到           *           *  @return           */          public  function getRandStr(){             $randChars  = '';             for($i = 0 ; $i < $this->length ; $i++){                 $randChars .= $this->text[rand(0,strlen($this->text))] ;             }               //字体编码统一转换为utf-8             //$randChars = iconv("GB2312","UTF-8",$randChars);               //写进session             $_SESSION[$this->checkcodefield] =  $randChars;               return  $randChars;          }            /* 创建字体颜色索引           * @return           */          public function createFontColor(){             //获取背景随机颜色组key             $rgbGroupKey = array_rand($this->fontcolor);             $red = $this->fontcolor[$rgbGroupKey]['red'];             $green = $this->fontcolor[$rgbGroupKey]['green'];             $blue = $this->fontcolor[$rgbGroupKey]['blue'];               //颜色索引             return  imagecolorallocate($this->im, $red, $green, $blue);;          }            //添加文字到图片          public function addTextToImage(){            //字体颜色            $fontcolor =$this->createFontColor();            //字体            $key = array_rand($this->font);            $font = $this->font[$key];              //验证码            $text = $this->getRandStr();              //偏转角度            $key = array_rand($this->angel);            $_angle = $this->angel[$key];              //起始坐标            $x = $this->x;            $y = $this->y;              //字体大小            $key = array_rand($this->fontsize);            $_fontsize = $this->fontsize[$key];              //添加文字到图片            imagettftext($this->im, $_fontsize , $_angle, $x, $y, $fontcolor, $font, $text);          }            /**           * 输出图片           *           */          public function outputImage(){            //创建布景            $this->createImgae();            //颜色添加到布景            $this->createBackgroundColor();            //添加文字到图片            $this->addTextToImage();              //增加过期,30分钟后过期            $expireTime = date("M, d Y H:i:s",time()+1800);            header("Expires: {$expireTime} GMT ");            header("Last-Modified: " . gmdate("D, d M Y H:i:s")." GMT");            header("Cache-Control: no-store, no-cache, must-revalidate");            header("Cache-Control: post-check=0, pre-check=0", false);            header("Pragma: no-cache");              //声明输出文件的类型            header('Content-type: image/png');            //输出png图片            imagepng($this->im);            //释放与此图片关联的内存            imagedestroy($this->im);          }        }        $instance = new verifycode;      $instance->outputImage();

验证码效果图:

php验证码效果图