漂亮的 PHP 验证码类

    <?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中  
    ?>  

页面中引用:

    <label><img src="./code.php" onclick="javascript:this.src='./code.php?tm='+Math.random();" /></label>  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值