萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> PHP驗證碼類實例

PHP驗證碼類實例

 這篇文章主要介紹了一個好用的PHP驗證碼類實例,有需要的朋友可以參考一下

分享一個好用的php驗證碼類,包括調用示例。 說明: 如果不適用指定的字體,那麼就用imagestring()函數,如果需要遇到指定的字體,就要用到imagettftext()函數。字體的位置在C盤下Windows/Fonts.   參考了網上的php 生成驗證碼的方法,以及php 圖片驗證碼和php 中文驗證碼的生成方法。用到了PHP GD庫的相關知識。   1,生成驗證碼的類 VerificationCode.class.php   代碼如下: <?php       class VerificationCode{           private $charset="abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789";  //隨機因子           private $code;  //驗證碼           private $codelen=4; //驗證碼長度           private $width=110; //寬度           private $height=30; //高度           private $img;   //圖像資源句柄           private $font;  //制定字體           private $fontSize=25;   //字體大小           private $fontColor; //字體顏色           public function __construct(){               $this->font="CALIBRIZ.TTF";           }           //生成驗證碼           private function createCode(){               $len=strlen($this->charset)-1;               for ($i = 0; $i < $this->codelen; $i++) {                   $this->code .= $this->charset[mt_rand(0,$len)];               }           }           //生成背景           private function createBg(){               $this->img=imagecreatetruecolor($this->width,$this->height);               $color = imagecolorallocate($this->img,mt_rand(157,255),mt_rand(157,255),mt_rand(157,255));               imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color);           }           //生成文字           private function createFont(){               $x=$this->width/$this->codelen;               for ($i = 0; $i < $this->codelen; $i++) {                   $this->fontColor=imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));                   imagettftext($this->img,$this->fontSize,mt_rand(-30,30),$i*$x+mt_rand(1,5),$this->height/1.4,$this->fontColor,$this->font,$this->code[$i]);  // www.jbxue.com                 //imagestring($this->img,5,$i*$x+mt_rand(1,5),5,$this->code[$i],$this->fontColor);               }           }           //生成線條、雪花           private function createDisturb(){               for ($i = 0; $i < 6; $i++) {                   $color=imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));                   imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->width),mt_rand(0,$this->width),mt_rand(0,$this->width),$color);               }               for ($i = 0; $i < 100; $i++) {                   $color=imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));                   imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),'*',$color);               }           }           //輸出           private function outPut(){               header("Content-Type:image/png");               imagepng($this->img);               imagedestroy($this->img);           }           public function showCode(){               $this->createBg();               $this->createCode();               $this->createDisturb();               $this->createFont();               $this->outPut();           }           //獲取驗證碼           public function getCode(){               return strtolower($this->code);           }       }   ?>     code.php     代碼如下: <?php       session_start();       require_once 'VerificationCode.class.php';       $code=new VerificationCode();       $_SESSION['code']=$code->getCode();       $code->showCode();   ?>     驗證碼:<input type="text" name="code" /><img src="code.php" onclick="javascript:this.src='code.php?time='+Math.random();" />  
copyright © 萬盛學電腦網 all rights reserved