可自定义生成验证码文字的大小、数量、干扰项等等,也可以自定义验证文字的字体。。。
废话不多说,直接上代码:
?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; html' target='_blank'>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如何实现随机数字和字母验证码的代码的详细内容,PHP教程
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答