thinkphp驗證碼更改

<?php
//驗證碼類  
class ValidateCode {  
        private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789'; //隨機因子  
          private $code;       		//驗證碼  
          private $codelen = 4;     //驗證碼長度  
          private $width = 130;     //寬度  
          private $height = 50;     //高度  
          private $img;        //圖形資源句柄  
          private $font;        //指定的字體  
          private $fontsize = 20;    //指定字體大小  
          private $fontcolor;      //指定字體顏色  
    
          //構造方法初始化  
          public function __construct() {  
             $this->font = THINK_PATH."/Common/elephant.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),$_x*$i+mt_rand(1,5),$this->height / 1.4,$this->fontcolor,$this->font,$this->code[$i]);  
             }  
          }  
    
          //生成線條、雪花  
          private function createLine() {  
             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->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$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 doimg() {  
             $this->createBg();  
             $this->createCode();  
             $this->createLine();  
             $this->createFont();
			 $_SESSION['verify'] = md5($this->getCode());//驗證碼保存到SESSION中 
             $this->outPut();  
          }  
    
          //獲取驗證碼  
          public function getCode() {  
             return strtolower($this->code);  
          }  
    
 }



將此類放到ThinkPHP/Extend/Library/ORG/UTIL下

Action類調用:

//驗證碼
	Public function verify(){
		
		//導入驗證碼類
		import('ORG.Util.Code');
		
		//實例化驗證碼類
		$_vc = new ValidateCode();
		
		//輸出驗證碼 
		$_vc->doimg(); 
	}	

html調用寫法:
<img id="img_seccode" onclick="javascript:this.src='__URL__/verify/tm='+Math.random();" src="__URL__/verify">

判斷驗證碼是否正確:
$_SESSION['verify']== MD5($verify)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章