用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - php代码库

php验证码类

2013-08-26 作者: guanhua举报

[php]代码库

<?php
/**
 * 验证码类
 */
class imgCreate {

    private $charset='abcdefghijklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ23456789';//随机因子
    private $code=""; //验证码
    private $codelen; //验证码长度
    private $width; //宽度
    private $height; //高度
    private $img; //图形资源句柄
    private $font='/font/simhei.ttf'; //指定字体
    private $fontsize; //指定字体大小
    
    //构造方法初始化
    public function __construct($width='100',$height='30',$codelen='4',$fontsize='5') {
        $this->width=$width;
        $this->height=$height;
        $this->codelen=$codelen;
        $this->fontsize=$fontsize;
    }
    
    //生成随机码
    private function crecteCode(){
        $_len= strlen($this->charset)-1;
        for($i=0;$i<$this->codelen;$i++){
            $this->code.=$this->charset[mt_rand(0, $_len)];
        }
		return $this->code;
    }

    //生成背景
    private function createBg(){
        $this->img=  imagecreatetruecolor($this->width, $this->height);
        $Bgcolor=  imagecolorallocate($this->img, mt_rand(0, 150), mt_rand(50, 100), mt_rand(0, 150));
        imagefill($this->img, 0, 0, $Bgcolor);
    }
    
    //生成文字
    private function createFont(){
		$fontcolor=imagecolorallocate($this->img, mt_rand(100, 200), mt_rand(100, 200), mt_rand(100, 200));
		imagefttext ($this->img, $this->fontsize, mt_rand(-10,10), $this->width/6, $this->height/1.2, $fontcolor, $this->font, $this->crecteCode());
    }
    
    //生成线条、雪花
    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<20;$i++){
            $color=  imagecolorallocate($this->img, mt_rand(150, 200), mt_rand(150, 200), mt_rand(150, 200));
            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->createLine();
        $this->createFont();
        $this->outPut();
    }
	
	//获取验证码
    public function getCode(){
        echo $this->crecteCode();
    }

}
?>


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...