国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP實現隨機數字、字母的驗證碼功能

2024-05-05 00:04:47
字體:
來源:轉載
供稿:網友

 可自定義生成驗證碼文字的大小、數量、干擾項等等,也可以自定義驗證文字的字體。。。

  廢話不多說,直接上代碼:

1、classgd.class.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實現隨機數字、字母的驗證碼功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 大英县| 榆树市| 教育| 保靖县| 阳泉市| 青阳县| 德保县| 绥江县| 贡嘎县| 汪清县| 岳阳市| 巴林右旗| 武穴市| 泸西县| 会昌县| 东乡族自治县| 凌源市| 隆林| 南岸区| 金溪县| 肃宁县| 龙山县| 梅州市| 花莲县| 黔东| 肇东市| 即墨市| 汝州市| 永仁县| 沂水县| 沾益县| 比如县| 富顺县| 靖安县| 凤山市| 海林市| 苍溪县| 万州区| 郑州市| 鹤峰县| 东兰县|