51可用代码模板网站

咨询热线:

181-1164-6936
  • 1
PHP代码
当前位置:首页>实用代码>PHP代码>

PHP 验证码类

时间:2017-08-11 17:40点击:
    <?php  
    //验证码类  
    class ValidateCode {  
    private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';    //随机因子  
        private $code;                            //验证码  
        private $codelen = 4;                    //验证码长度  
        private $width = 130;                    //宽度  
        private $height = 50;                    //高度  
        private $img;                                //图形资源句柄  
        private $font;                                //指定的字体  
        private $fontsize = 20;                //指定字体大小  
        private $fontcolor;                        //指定字体颜色  
      
      
        //构造方法初始化  
        public function __construct() {  
            $this->font = ROOT_PATH.'/font/elephant.ttf';  
        }  
      
      
        //生成随机码  
        private function createCode() {  
            $_len = strlen($this->charset)-1;  
            for ($i=0;$i<$this->codelen;$i++) {  
                $this->code .= $this->charset[mt_rand(0,$_len)];  
            }  
        }  
      
      
        //生成背景  
        private function createBg() {  
            $this->img = imagecreatetruecolor($this->width, $this->height);  
            $color = imagecolorallocate($this->img, mt_rand(157,255), mt_rand(157,255), mt_rand(157,255));  
            imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color);  
        }  
      
      
        //生成文字  
        private function createFont() {      
            $_x = $this->width / $this->codelen;  
            for ($i=0;$i<$this->codelen;$i++) {  
                $this->fontcolor = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));  
                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]);  
            }  
        }  
      
      
        //生成线条、雪花  
        private function createLine() {  
            for ($i=0;$i<6;$i++) {  
                $color = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));  
                imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),
                mt_rand(0,$this->height),$color);  
            }  
            for ($i=0;$i<100;$i++) {  
                $color = imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));  
                imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),'*',
                $color);  
            }  
        }  
      
      
        //输出  
        private function outPut() {  
            header('Content-type:image/png');  
            imagepng($this->img);  
            imagedestroy($this->img);  
        }  
      
      
        //对外生成  
        public function doimg() {  
            $this->createBg();  
            $this->createCode();  
            $this->createLine();  
            $this->createFont();  
            $this->outPut();  
        }  
      
      
        //获取验证码  
        public function getCode() {  
            return strtolower($this->code);  
        }  
    }  



输出实例:


   使用方法:

        1、先把验证码类保存为一个名为 ValidateCode.class.PHP 的文件;

        2、做一个名为 code.php 的文件进行调用该类;

code.php



    <?php  
       require './ValidateCode.class.php';  //先把类包含进来,实际路径根据实际情况进行修改。  
       $_vc = new ValidateCode();      //实例化一个对象  
       $_vc->doimg();             
       $_SESSION['code'] = $_vc->getCode();//验证码保存到SESSION中  
    ?>  



  3、引用到页面中,代码如下:



    </pre><pre class="html" name="code"><label><img src="./code.php" onclick="javascript:this.src='./code.php?tm='+Math.random();" /></label>  


51可用模板(代码)网站专为广大站长朋友提供精品模板与代码,同时免费提供网站收录。
本站域名: WWW.51KYDM.COM    联系方式:QQ:182468923    手机:18111646936
本站关键词:网站链接收录网址收录入口网站免费提交收录网站收录提交入口    网站地图
51可用模板
展开