個(gè)人寫的PHP驗(yàn)證碼生成類分享
此驗(yàn)證碼類直接拿去就可以用,也可以參考!
其中類成員codestr是生成的驗(yàn)證碼字符串:
<?php /** * 驗(yàn)證碼 */ class Code{ // 1. 定義各個(gè)成員 有寬、高、畫布、字?jǐn)?shù)、類型、畫類型 private $width; //寬度 private $height; //高度 private $num; //驗(yàn)證碼字?jǐn)?shù) private $imgType; //生成圖片類型 private $Type; //字串類型 1,2,3 三個(gè)選項(xiàng) 1 純數(shù)字 2 純小寫字母 3 大小寫數(shù)字混合 private $hb; //畫布 public $codestr; // 驗(yàn)證碼字串 public function __construct($height=20,$num=4,$imgType="jpeg",$Type=1){ $this->width = $num*20; $this->height = $height; $this->num = $num; $this->imgType = $imgType; $this->Type = $Type; $this->codestr = $this->codestr(); $this->zuhe(); } // 2. 定義隨機(jī)獲取字符串函數(shù) private function codestr(){ switch($this->Type){ case 1: // 類型為1 獲取1-9隨機(jī)數(shù) $str = implode("",array_rand(range(0,9),$this->num)); break; case 2: // 類型為2 獲取a-z隨機(jī)小寫字母 $str = implode("",array_rand(array_flip(range(a,z)),$this->num)); break; case 3: // 類型為3 獲取數(shù)字,小寫字母,大寫字母 混合 for($i=0;$i<$this->num;$i++){ $m = rand(0,2); switch($m){ case 0: $o = rand(48,57); break; case 1: $o = rand(65,90); break; case 2: $o = rand(97,122); break; } $str .= sprintf("%c",$o); } break; } return $str; } // 3. 初始化畫布圖像資源 private function Hb(){ $this->hb = imagecreatetruecolor($this->width,$this->height); } // 4. 生成背景顏色 private function Bg(){ return imagecolorallocate($this->hb,rand(130,250),rand(130,250),rand(130,250)); } // 5. 生成字體顏色 private function Font(){ return imagecolorallocate($this->hb,rand(0,100),rand(0,100),rand(0,100)); } // 6. 填充背景顏色 private function BgColor(){ imagefilledrectangle($this->hb,0,0,$this->width,$this->height,$this->Bg()); } // 7. 干擾點(diǎn) private function ganrao(){ $sum=floor(($this->width)*($this->height)/3); for($i=0;$i<$sum;$i++){ imagesetpixel($this->hb,rand(0,$this->width),rand(0,$this->height),$this->Bg()); } } // 8. 隨機(jī)直線 弧線 private function huxian(){ for($i=0;$i<$this->num;$i++){ imageArc($this->hb,rand(0,$this->width),rand(0,$this->height),rand(0,$this->width),rand(0,$this->height),rand(0,360),rand(0,360),$this->Bg()); } } // 9. 寫字 private function xiezi(){ for($i=0;$i<$this->num;$i++){ $x=ceil($this->width/$this->num)*$i; $y=rand(1,$this->height-15); imagechar($this->hb,5,$x+4,$y,$this->codestr[$i],$this->Font()); } } // 10. 輸出 private function OutImg(){ $shuchu="image".$this->imgType; $header="Content-type:image/".$this->imgType; if(function_exists($shuchu)){ header($header); $shuchu($this->hb); }else{ exit("GD庫沒有此類圖像"); } } // 11. 拼裝 private function zuhe(){ $this->Hb(); $this->BgColor(); $this->ganrao(); $this->huxian(); $this->xiezi(); $this->OutImg(); } public function getCodeStr(){ return $this->codestr; } } ?>
- 一個(gè)漂亮的php驗(yàn)證碼類(分享)
- PHP驗(yàn)證碼類代碼( 最新修改,完全定制化! )
- 一個(gè)經(jīng)典的PHP驗(yàn)證碼類分享
- 一個(gè)好用的PHP驗(yàn)證碼類實(shí)例分享
- 一個(gè)PHP驗(yàn)證碼類代碼分享(已封裝成類)
- 一個(gè)實(shí)用的php驗(yàn)證碼類
- PHP實(shí)現(xiàn)的封裝驗(yàn)證碼類詳解
- PHP使用GIFEncoder類生成的GIF動(dòng)態(tài)圖片驗(yàn)證碼
- 一個(gè)簡單安全的PHP驗(yàn)證碼類、PHP驗(yàn)證碼
- 分享一個(gè)漂亮的php驗(yàn)證碼類
- PHP驗(yàn)證碼類ValidateCode解析
- PHP code 驗(yàn)證碼生成類定義和簡單使用示例
相關(guān)文章
php微信公眾號開發(fā)(2)百度BAE搭建和數(shù)據(jù)庫使用
這篇文章主要介紹了php微信公眾號開發(fā)第二課,百度BAE搭建和數(shù)據(jù)庫使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12PHP中nowdoc和heredoc使用需要注意的一點(diǎn)
多次使用 php nowdoc HereDoc 插入大量Hmtl都沒有成功,一樣提示語法有問題,事實(shí)上PHP手冊注明是這樣寫的,實(shí)在很奇怪2014-03-03PHP isset()與empty()的使用區(qū)別詳解
本文主要介紹了PHP isset()與empty()的使用區(qū)別。具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-02-02在Ubuntu 14.04上部署 PHP 環(huán)境及 WordPress
Ubuntu確實(shí)很好玩。有喜歡的命令行,簡潔的界面,不同于Window要的感覺。偶爾換換環(huán)境工作,學(xué)習(xí)Linux的思維方式,是一種不錯(cuò)的做法。之前也折騰過Ubuntu,想在Linux下學(xué)習(xí)某些開發(fā)(主要還是和代碼打交道),Ubuntu當(dāng)然是最好不過的選擇,并且剛發(fā)布了14.04版本2014-09-09laravel 如何實(shí)現(xiàn)引入自己的函數(shù)或類庫
laravel 如何實(shí)現(xiàn)引入自己的函數(shù)或類庫?今天小編就為大家解答一下在laravel中引入自己的函數(shù)或類庫的方法,分享給大家,給大家做個(gè)參考,一起過來看看吧2019-10-10Thinkphp極驗(yàn)滑動(dòng)驗(yàn)證碼實(shí)現(xiàn)步驟解析
這篇文章主要介紹了Thinkphp極驗(yàn)滑動(dòng)驗(yàn)證碼實(shí)現(xiàn)步驟解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11談?wù)凱HP中substr和substring的正確用法及相關(guān)參數(shù)的介紹
這篇文章主要介紹了PHP中substr和substring的正確用法及相關(guān)參數(shù)介紹的相關(guān)資料,需要的朋友可以參考下2015-12-12