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" οnclick="javascript:this.src='__URL__/verify/tm='+Math.random();" src="__URL__/verify">

判断验证码是否正确:
$_SESSION['verify']== MD5($verify)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值