加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

漂亮的 PHP 验证码类

发布时间:2023-03-07 13:41:10 所属栏目:教程 来源:
导读:<?PHP

//验证码类

class ValidateCode {

private $charset = &#39;abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789&#39;; //随机因子

private $code; /
<?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>  

 

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章