這篇文章主要介紹了一個好用的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();" />