Heim  >  Artikel  >  php教程  >  一个好用的PHP验证码类实例分享

一个好用的PHP验证码类实例分享

WBOY
WBOYOriginal
2016-06-06 20:25:591227Durchsuche

这篇文章主要介绍了一个好用的PHP验证码类实例,有需要的朋友可以参考一下

分享一个好用的php验证码类,包括调用示例。
说明:
如果不适用指定的字体,那么就用imagestring()函数,如果需要遇到指定的字体,就要用到imagettftext()函数。字体的位置在C盘下Windows/Fonts.

参考了网上的php 生成验证码的方法,以及php 图片验证码和php 中文验证码的生成方法。用到了PHP GD库的相关知识。

1,生成验证码的类 VerificationCode.class.php

复制代码 代码如下:


    class VerificationCode{ 
        private $charset="abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789";  //随机因子 
        private $code;  //验证码 
        private $codelen=4; //验证码长度 
        private $width=110; //宽度 
        private $height=30; //高度 
        private $img;   //图像资源句柄 
        private $font;  //制定字体 
        private $fontSize=25;   //字体大小 
        private $fontColor; //字体颜色 
        public function __construct(){ 
            $this->font="CALIBRIZ.TTF"; 
        } 
        //生成验证码 
        private function createCode(){ 
            $len=strlen($this->charset)-1; 
            for ($i = 0; $i 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 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),$i*$x+mt_rand(1,5),$this->height/1.4,$this->fontColor,$this->font,$this->code[$i]);  //
                //imagestring($this->img,5,$i*$x+mt_rand(1,5),5,$this->code[$i],$this->fontColor); 
            } 
        } 
        //生成线条、雪花 
        private function createDisturb(){ 
            for ($i = 0; $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->width),mt_rand(0,$this->width),mt_rand(0,$this->width),$color); 
            } 
            for ($i = 0; $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 showCode(){ 
            $this->createBg(); 
            $this->createCode(); 
            $this->createDisturb(); 
            $this->createFont(); 
            $this->outPut(); 
        } 
        //获取验证码 
        public function getCode(){ 
            return strtolower($this->code); 
        } 
    } 
?>

code.php

复制代码 代码如下:

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn