• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php如何实现随机数字和字母验证码的代码

php 搞代码 3年前 (2022-01-21) 26次浏览 已收录 0个评论

php实现随机数字、字母的验证码

  可自定义生成验证码文字的大小、数量、干扰项等等,也可以自定义验证文字的字体。。。

  废话不多说,直接上代码:

<?phpClass Captcha{        private $_fontfile='';        private $_size=36;        private $_width=200;        private $_height=100;        private $_length=4;        private $_image=null;        private $_snow=0;        private $_pixel=0;        private $_line=0;    public function __construct($config=array()){        if(is_array($config)&&count($config)>0){            if(isset($config['fontfile'])&&is_file($config['fontfile'])&&is_readable($config['fontfile'])){                $this->_fontfile=$config['fontfile'];            }else{                return false;            }            if(isset($config['size'])&&$config['size']>0){                $this->_size=(int)$config['size'];            }            if(isset($config['width'])&&$config['width']>0){                $this->_width=(int)$config['width'];            }            if(isset($config['height'])&&$config['height']>0){                $this->_height=(int)$config['height'];            }            if(isset($config['length'])&&$config['length']>0){                $this->_length=(int)$config['length'];            }            if(isset($config['snow'])&&$config['snow']>0){                $this->_snow=(int)$config['snow'];            }            if(isset($config['pixel'])&&$config['pixel']>0){                $this->_pixel=(int)$config['pixel'];            }            if(isset($config['line'])&&$config['line']>0){                $this->_line=(int)$config['line'];            }            $this->_image=imagecreatetruecolor($this->_width,$this->_height);            return $this->_image;         }         else{            return false;        }    }    public function getCaptcha(){        $white=imagecolorallocate($this->_image,255,255,255);        imagefilledrectangle($this->_image,0,0,$this->_width,$this->_height,$white);        $str=$this->_generateStr($this->_length);        if(false===$str){            return false;        }        $fontfile=$this->_fontfile;        for($i=0;$i<$this->_length;$i++){            $size=$this->_size;            $angle=mt_rand(-30,30);            $x=ceil($this->_width/$this->_length)*$i+mt_rand(5,10);            $y=ceil($this->_height/1.5);            $color=$this->_getRandColor();            //针对中文字符截取            //$text=mb_substr($str,$i,1,'utf-8');            $text=$str{$i};            imagettftext($this->_image, $size, $angle, $x, $y, $color, $fontfile, $text);        }        if($this->_snow){            $this->_getSnow();        }else{            if($this->_pixel){                $this->_getPixel();            }            if($this->_line){                $this->_getLine();            }        }        header('content-type:image/png');        imagepng($this->_image);        imagedestroy($this->_image);        return strtolower($str);    }    private function _getSnow(){        for($i=1;$i<=$this->_snow;$i++){            imagestring($this->_image,mt_rand(1,5),mt_rand(0,$this->_width),mt_rand(0,$this->_height),'*',$this->_getRandColor());        }    }    private function _getPixel(){        for($i=1;$i<=$this->_pixel;$i++){            imagesetpixel($this->_image,mt_rand(0,$this->_width),mt_rand(0,$this->_height),$this->_getRandColor());        }    }    private function _getLine(){        for($i=1;$i<=$this->_line;$i++){            imageline($this->_image,mt_rand(0,$this->_width),mt_rand(0,$this->_height),mt_rand(0,$this->_width),mt_rand(0,$this->_height),$this->_getRandColor());        }    }    private function _generateStr($length=4){        if($length<1 || $length>30){            return false;        }        $chars=array(            'a','b','c','d','e','f','g','h','k','m','n','p','x','y','z',  <div>……本2文来源gaodai.ma#com搞##代!^码@网3</div><code>搞代gaodaima码</code>          'A','B','C','D','E','F','G','H','K','M','N','P','X','Y','Z',            1,2,3,4,5,6,7,8,9            );        $str=join('',array_rand(array_flip($chars),$length));        return $str;    }    private function _getRandColor(){        return imagecolorallocate($this->_image,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));    }}?>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php如何实现随机数字和字母验证码的代码
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址