温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

PHP怎么实现随机数字、字母的验证码功能

发布时间:2021-08-11 22:31:51 来源:亿速云 阅读:219 作者:chen 栏目:编程语言

本篇内容主要讲解“PHP怎么实现随机数字、字母的验证码功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP怎么实现随机数字、字母的验证码功能”吧!



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

1、classgd.class.php

<?php Class 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

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


就这样成功实现了随机数字、字母的验证码功能!

到此,相信大家对“PHP怎么实现随机数字、字母的验证码功能”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php
AI