0

0

支持背景为调色板和图片文件的验证码类

PHP中文网

PHP中文网

发布时间:2016-05-25 17:12:25

|

1588人浏览过

|

来源于php中文网

原创

支持背景为调色板和图片文件的验证码类

w = 500 ;
          //图片高度
          $this->h = 600;
          //验证字符
          $this->text = '0123456789qwertyuiopasdfghjklzxcvbnm';
          //字体
          $this->font = array(
                 'C:\\WINDOWS\\Fonts\\Ming Imperial.TTF',
                 'C:\\WINDOWS\\Fonts\\latha.TTF',
                 'C:\\WINDOWS\\Fonts\\ARIALNBI.TTF',
                 'C:\\WINDOWS\\Fonts\\GOTHICBI.TTF'
                );
          //字符数
          $this->length = '4';
          //字体大小
          $this->fontsize = array(50,60,70);
          //字体颜色
          $this->fontcolor = array(
                 array('red'=>0x14, 'green'=>0x37,'blue'=>0xad),
                 array('red'=>0x6e, 'green'=>0x86,'blue'=>0xd6),
                 array('red'=>0x2c, 'green'=>0x40 ,'blue'=>0x81),
                 array('red'=>0x06, 'green'=>0x1f ,'blue'=>0x70),
                 array('red'=>0x14, 'green'=>0x37 ,'blue'=>0xad),
                 array('red'=>0x57, 'green'=>0x79 ,'blue'=>0xc0)
          );
          //字体的偏转角度
          $this->angel = array(2,4,8,-2,-4,-8);
          //背景色
          $this->backgroundcolor = array(
                  array('red'=>0x14, 'green'=>0x37,'blue'=>0xad),
                  array('red'=>0x6e, 'green'=>0x86,'blue'=>0xd6),
                  array('red'=>0x2c, 'green'=>0x40 ,'blue'=>0x81),
                  array('red'=>0x06, 'green'=>0x1f ,'blue'=>0x70),
                  array('red'=>0x14, 'green'=>0x37 ,'blue'=>0xad),
                  array('red'=>0x57, 'green'=>0x79 ,'blue'=>0xc0)
          );
 
          //背景图片
          $this->backgroundimage = array(
                 'F:\\city_photo\\city_photo\\1\\1807141.jpg',
                 'F:\\city_photo\\city_photo\\1\\1807141.jpg',
                 'F:\\city_photo\\city_photo\\1\\1807141.jpg',
                 'F:\\city_photo\\city_photo\\1\\1807141.jpg',
                 'F:\\city_photo\\city_photo\\1\\1807141.jpg'
          );
          //坐标轴X
          $this->x = 100 ;
          //坐标轴Y
          $this->y = 300 ;
          //验证码存放的字段
          $this->checkcodefield = 'checkcode';
        }
 
        /* 创建背景
         *
         * @return $im
         */
        public function createImgae(){
           //$this->im = imagecreatetruecolor($this->w,$this->h);
           $key = array_rand($this->backgroundimage);
           $this->im = imagecreatefromjpeg( $this->backgroundimage[$key]);
 
           return $this->im;
        }
 
        /* 创建背景的索引色
         *
         *  @return
         */
        public function createBackgroundColor(){
           //获取背景随机颜色组key
           $rgbGroupKey = array_rand($this->backgroundcolor);
           $red = $this->backgroundcolor[$rgbGroupKey]['red'];
           $green = $this->backgroundcolor[$rgbGroupKey]['green'];
           $blue = $this->backgroundcolor[$rgbGroupKey]['blue'];
 
           //返回颜色索引
           return imagecolorallocate($this->im, $red, $green, $blue);
        }
 
 
        /* 获取随机字符,并将字符存放发到
         *
         *  @return
         */
        public  function getRandStr(){
           $randChars  = '';
           for($i = 0 ; $i < $this->length ; $i++){
               $randChars .= $this->text[rand(0,strlen($this->text))] ;
           }
 
           //字体编码统一转换为utf-8
           //$randChars = iconv("GB2312","UTF-8",$randChars);
 
           //写进session
           $_SESSION[$this->checkcodefield] =  $randChars;
 
           return  $randChars;
        }
 
        /* 创建字体颜色索引
         * @return
         */
        public function createFontColor(){
           //获取背景随机颜色组key
           $rgbGroupKey = array_rand($this->fontcolor);
           $red = $this->fontcolor[$rgbGroupKey]['red'];
           $green = $this->fontcolor[$rgbGroupKey]['green'];
           $blue = $this->fontcolor[$rgbGroupKey]['blue'];
 
           //颜色索引
           return  imagecolorallocate($this->im, $red, $green, $blue);;
        }
 
        //添加文字到图片
        public function addTextToImage(){
          //字体颜色
          $fontcolor =$this->createFontColor();
          //字体
          $key = array_rand($this->font);
          $font = $this->font[$key];
 
          //验证码
          $text = $this->getRandStr();
 
          //偏转角度
          $key = array_rand($this->angel);
          $_angle = $this->angel[$key];
 
          //起始坐标
          $x = $this->x;
          $y = $this->y;
 
          //字体大小
          $key = array_rand($this->fontsize);
          $_fontsize = $this->fontsize[$key];
 
          //添加文字到图片
          imagettftext($this->im, $_fontsize , $_angle, $x, $y, $fontcolor, $font, $text);
        }
 
        /**
         * 输出图片
         *
         */
        public function outputImage(){
          //创建布景
          $this->createImgae();
          //颜色添加到布景
          $this->createBackgroundColor();
          //添加文字到图片
          $this->addTextToImage();
 
          //增加过期,30分钟后过期
          $expireTime = date("M, d Y H:i:s",time()+1800);
          header("Expires: {$expireTime} GMT ");
          header("Last-Modified: " . gmdate("D, d M Y H:i:s")." GMT");
          header("Cache-Control: no-store, no-cache, must-revalidate");
          header("Cache-Control: post-check=0, pre-check=0", false);
          header("Pragma: no-cache");
 
          //声明输出文件的类型
          header('Content-type: image/png');
          //输出png图片
          imagepng($this->im);
          //释放与此图片关联的内存
          imagedestroy($this->im);
        }
 
    }
 
    $instance = new verifycode;
    $instance->outputImage();


3. [图片] examplle2.jpg 

1184.jpg


以上就是支持背景为调色板和图片文件的验证码类的内容,更多相关内容请关注PHP中文网(www.php.cn)!

jQuery响应式后台登录界面模板
jQuery响应式后台登录界面模板

jQuery响应式后台登录界面模板html源码,登录页面通过jquery来验证表单,判断用户名和密码是否符合要求,通常登录页面在企业网站或者商城网站都是必须要用到的页面,响应式的后台页面,当浏览器放大或者缩小,背景会根据浏览器来调整图片的大小!php中文网推荐下载!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

6

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

6

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

6

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

5

2026.01.13

PHP缓存策略教程大全
PHP缓存策略教程大全

本专题整合了PHP缓存相关教程,阅读专题下面的文章了解更多详细内容。

3

2026.01.13

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

1

2026.01.13

交互式图表和动态图表教程汇总
交互式图表和动态图表教程汇总

本专题整合了交互式图表和动态图表的相关内容,阅读专题下面的文章了解更多详细内容。

15

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

4

2026.01.13

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

5

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
apipost极速入门
apipost极速入门

共6课时 | 0.5万人学习

第三期培训_PHP开发
第三期培训_PHP开发

共116课时 | 25.9万人学习

独孤九贱(5)_ThinkPHP5视频教程
独孤九贱(5)_ThinkPHP5视频教程

共74课时 | 125.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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