漂亮的php验证码类

xiaoxiao2021-02-28  78

<?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" οnclick="javascript:this.src='./code.php?tm='+Math.random();" /></label>

下载地址:http://pan.baidu.com/s/1bngYmM7

 

转载请注明原文地址: https://www.6miu.com/read-19038.html

最新回复(0)