微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

漂亮的 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),255));  

        imagefilledrectangle($this->img,$this->height,$this->width,$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),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,156));  

            imageline($this->img,$this->width),$this->height),$color);  

        }  

        for ($i=0;$i<100;$i++) {  

            $color = imagecolorallocate($this->img,mt_rand(200,255));  

            imagestring($this->img,mt_rand(1,'*',$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] view plain copy

<?PHP  

   require './ValidateCode.class.PHP';  //先把类包含进来,实际路径根据实际情况进行修改。  

   $_vc = new ValidateCode();      //实例化一个对象  

   $_vc->doimg();             

   $_SESSION['code'] = $_vc->getCode();//验证码保存到SESSION中  

?> 

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

<label><img src="./code.PHP" onclick="javascript:this.src='./code.PHP?tm='+Math.random();" /></label>  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐