·您当前的位置:首页 > 技术教程 > PHP教程 >

[php]php做的图片验证码类实例源代码

时间:2014-09-01 14:01酷播
[php]php做的图片验证码类实例源代码

[php]php做的图片验证码类实例源代码

  1. <?php   
  2. //验证码类   
  3. class ValidateCode {   
  4. private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';    //随机因子   
  5.     private $code;                            //验证码   
  6.     private $codelen = 4;                    //验证码长度   
  7.     private $width = 130;                    //宽度   
  8.     private $height = 50;                    //高度   
  9.     private $img;                                //图形资源句柄   
  10.     private $font;                                //指定的字体   
  11.     private $fontsize = 20;                //指定字体大小   
  12.     private $fontcolor;                        //指定字体颜色   
  13.    
  14.    
  15.     //构造方法初始化   
  16.     public function __construct() {   
  17.         $this->font = ROOT_PATH.'/font/elephant.ttf';   
  18.     }   
  19.    
  20.    
  21.     //生成随机码   
  22.     private function createCode() {   
  23.         $_len = strlen($this->charset)-1;   
  24.         for ($i=0;$i<$this->codelen;$i++) {   
  25.             $this->code .= $this->charset[mt_rand(0,$_len)];   
  26.         }   
  27.     }   
  28.    
  29.    
  30.     //生成背景   
  31.     private function createBg() {   
  32.         $this->img = imagecreatetruecolor($this->width, $this->height);   
  33.         $color = imagecolorallocate($this->img, mt_rand(157,255), mt_rand(157,255), mt_rand(157,255));   
  34.         imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color);   
  35.     }   
  36.    
  37.    
  38.     //生成文字   
  39.     private function createFont() {       
  40.         $_x = $this->width / $this->codelen;   
  41.         for ($i=0;$i<$this->codelen;$i++) {   
  42.             $this->fontcolor = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));   
  43.             imagettftext($this->img,$this->fontsize,mt_rand(-30,30),$_x*$i+mt_rand(1,5),$this->height / 1.4,$this->fontcolor,$this->font,$this->code[$i]);   
  44.         }   
  45.     }   
  46.    
  47.    
  48.     //生成线条、雪花   
  49.     private function createLine() {   
  50.         for ($i=0;$i<6;$i++) {   
  51.             $color = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));   
  52.             imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$color);   
  53.         }   
  54.         for ($i=0;$i<100;$i++) {   
  55.             $color = imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));   
  56.             imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),'*',$color);   
  57.         }   
  58.     }   
  59.    
  60.    
  61.     //输出   
  62.     private function outPut() {   
  63.         header('Content-type:image/png');   
  64.         imagepng($this->img);   
  65.         imagedestroy($this->img);   
  66.     }   
  67.    
  68.    
  69.     //对外生成   
  70.     public function doimg() {   
  71.         $this->createBg();   
  72.         $this->createCode();   
  73.         $this->createLine();   
  74.         $this->createFont();   
  75.         $this->outPut();   
  76.     }   
  77.    
  78.    
  79.     //获取验证码   
  80.     public function getCode() {   
  81.         return strtolower($this->code);   
  82.     }   
  83. }   

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器