可自定義生成驗證碼文字的大小、數量、干擾項等等,也可以自定義驗證文字的字體。。。
廢話不多說,直接上代碼:
?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教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答