首页 > php教程 > PHP源码 > 正文

对象来编写的验证码类

php中文网
发布: 2016-06-06 09:32:27
原创
1623人浏览过
跳至 [1] [全屏预览]
<?php

/* 
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
Class Image{
    
    private $img;
    public $width = 85;
    public $height = 25;
    public $code;
    public $code_len = 4;
    public $code_str = "329832983DSDSKDSLKQWEWQ2lkfDSFSDjfdsfdsjwlkfj93290KFDSKJFDSOIDSLK";
    public $bg_color = '#DCDCDC';
    public $font_size = 16;
    public $font = 'font.ttf';
    public $font_color = '#000000';
    
    //创建验证码饿字符创
    public function create_code(){
        $code = '';
        for( $i=0;$i<$this->code_len;$i++ ){
            $code .= $this->code_str[mt_rand(0, strlen($this->code_str)-1)];
    }
        return $this->code = $code;
    }
    
    //输出图像
    public function getImage(){
        $w = $this->width;
        $h = $this->height;
        $bg_color = $this->bg_color;
        $img = imagecreatetruecolor($w, $h);
        $bg_color = imagecolorallocate($img, 
	hexdec(substr($bg_color, 1,2)), hexdec(substr($bg_color, 3,2)), hexdec(substr($bg_color, 5,2)));
	imagefill($img, 0, 0, $bg_color);
        $this->img = $img;
        $this->create_font();
        $this->create_pix();
	$this->show_code();
    }


    //写入验证码
    public function create_font(){
        $this->create_code();
        $color = $this->font_color;
        $font_color = imagecolorallocate($this->img, hexdec(substr($color,1,2)), hexdec(substr($color, 3,2)), hexdec(substr($color,5,2)));
        $x = $this->width/$this->code_len;
        for( $i=0;$i<$this->code_len;$i++ ){
            $txt_color = imagecolorallocate($this->img, mt_rand(0,100), mt_rand(0, 150), mt_rand(0, 200));
            imagettftext($this->img, $this->font_size, mt_rand(-30, 30), $x*$i+mt_rand(3, 6), mt_rand($this->height/1.2, $this->height), $txt_color,  $this->font , $this->code[$i]);  
            //imagestring($this->img, $this->font_size, $x*$i+mt_rand(3, 6),mt_rand(0, $this->height/4) , $this->code[$i], $font_color);
        }
        $this->font_color = $font_color;
    }
    
    //画干扰线
    public function create_pix(){
        $pix_color= $this->font_color;
		for($i=0;$i<100;$i++){
			imagesetpixel($this->img, mt_rand(0, $this->width),mt_rand(0, $this->height), $pix_color);
		}
		for($j=0;$j<4;$j++){
			imagesetthickness($this->img, mt_rand(1, 2));
			imageline($this->img, mt_rand(0, $this->width), mt_rand(0, $this->height),  mt_rand(0, $this->width), mt_rand(0, $this->height), $pix_color);
		}
    }
    
    //得到验证码
    public function getCode(){
        return strtoupper($this->code);
    }


    //输出验证码
    private function show_code(){
		header("Content-type:image/png");
		imagepng($this->img);
		imagedestroy($this->img);
	}
}
登录后复制

2. [图片] verify.png    

对象来编写的验证码类
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号