各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案

Str Tom,为分享PHP技术和解决方案,贡献一份自己的力量!
QQ:420220301 微信/手机:150-3210-7690
当前位置:首页 > CMS教程 > PHP

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

管理员 2023-09-05
PHP
132

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

内容导读

收集整理的这篇技术教程文章主要介绍了php如何实现随机数字和字母验证码的代码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3417字,纯文字阅读大概需要5分钟

内容图文

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',            '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));    }}?>

2、testCaptcha.php

<?phprequire_once 'classgd.class.php';$config=array('fontfile'=>'fonts/simfang.ttf',   //引入字体文件//'snow'=>50,'pixel'=>100,'line'=>10    );$captcha=new Captcha($config);$captcha->getCaptcha();?>

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

php如何重写session的存储机制

如何通过php来遍历文件夹获取图片目录名称及文件名

以上就是php如何实现随机数字和字母验证码的代码的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的php如何实现随机数字和字母验证码的代码全部内容,希望文章能够帮你解决php如何实现随机数字和字母验证码的代码所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

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


希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 lecms, classcms, fastadmin, pbootcms, phpcms, eyoucms, yzmcms, PHP, xunruicms, jizhicms, dedecms, wordpress, hkcms, yzncms, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。

扫码关注

qrcode

QQ交谈

回顶部