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開發驗證碼例項:,大家也可以學習參考!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31560779/viewspace-2221274/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java之生成一個隨機驗證碼(數字+大小寫字母)Java隨機
- php實現完整版驗證碼(數字+大小寫字母+干擾素)PHP
- PHP算式驗證碼和漢字驗證碼的實現方法PHP
- javascript實現的生成驗證碼隨機數程式碼例項JavaScript隨機
- 短視訊開發,生成隨機的驗證碼數字隨機
- Python識別字母數字組合驗證碼Python
- JavaScript數字和字母組合驗證碼詳解JavaScript
- js獲取數字和字母隨機數程式碼例項JS隨機
- PostgreSQL 生成隨機數字、字串、日期、驗證碼以及 UUIDSQL隨機字串UI
- JavaScript隨機五位數驗證碼JavaScript隨機
- 隨機驗證碼隨機
- PHP非字母數字の程式碼PHP
- 隨機生成六位數驗證碼隨機
- 一對一聊天原始碼,驗證碼生成隨機數字排列組合原始碼隨機
- JavaScript生成四位數字或者字母隨機數JavaScript隨機
- Ionic Angular 實現驗證碼倒數計時功能Angular
- java視窗登入介面實現隨機驗證碼Java隨機
- Python中存放10000個6位隨機數字的驗證碼Python隨機
- 臭名昭著的手機驗證碼功能是如何實現的
- 驗證字串是否由字母、中文或者數字組成字串
- Java實現郵箱驗證碼功能Java
- 正規表示式驗證六位數以上數字,符號,字母任意兩種混合的密碼驗證策略符號密碼
- 一個PHP通用隨機密碼的實現PHP隨機密碼
- app直播原始碼,驗證時實現獲取驗證碼並顯示倒數計時的功能APP原始碼
- 採用 PHP-quickorm/Captcha,用最快的速度在 PHP 語言下實現驗證碼功能PHPUIORMAPT
- Java隨機生成圖片與HTML表單中的驗證碼實現Java隨機HTML
- 十位隨機驗證碼隨機
- 隨機生成四個驗證碼隨機
- 應用:隨機生成驗證碼隨機
- javascript實現獲取指定數字區間的隨機數JavaScript隨機
- 驗證由數字和字母組成字串的正規表示式字串
- 分享一個圖片驗證碼功能的實現
- php短視訊原始碼,自動生成驗證碼,支援點選更換驗證碼數字PHP原始碼
- 簡單的數字驗證碼破解
- 在ASP.NET下實現數字和字元相混合的驗證碼ASP.NET字元
- servlet awt隨機圖片驗證碼Servlet隨機
- SpringSceurity(4)---簡訊驗證碼功能實現Spring
- Asp.net(C#)實現驗證碼功能ASP.NETC#