• 葡萄牙西班牙明晨上演B组焦点战 谁才是真正铁嘴钢牙? 2019-04-17
  • 回复@不能这样啊:那你不是可以啥事不做天天甩起手耍?你自己不求上进还不准别人有所追求么? 2019-04-17
  • 人民网评:为改革创新撑腰,“为官不为”行不通了 2019-04-16
  • 【新时代 新作为 新篇章】特色枣木香菇畅销市场 2019-04-09
  • 惊坛一周汇总:稳定农产品价格,政府和市场谁都不能“旷课” 2019-04-07
  • 巴克利:詹姆斯不会去76人的,因为他需要球权 2019-04-02
  • 高考不过是人生一隅,前路满是阳光花香 2019-03-29
  • php常用类分享之验证码图片类

    浙江11选5前二直选走势图编程小贴士> 查看全部 >03-14

    验证码生成类:

    功能:生成验证码。

    本文实例讲述了PHP实现的简单验证码类及其详细的使用方法。分享给大家供大家参考,具体如下

    <?php

    /**
     * 验证码图片类
    */

    class verify{

        //声明成员属性          
        private $width; //宽
        private $height; //高
        private $imagetype; //图片类型
        private $num; //显示字符的个数
        private $checkcode; //返回给session 的字符串
        private $img; //定义一个图片资源
        private $type; //验证码的类型 ,1 数字 2 字母 3 组合型
        
        //初始化 默认的参数
        public function __construct($width='100',$height='30',$num='4',$type='3',$imagetype='jpeg'){
            $this->width=$width;
            $this->height=$height;
            $this->num=$num;
            $this->type=$type;
            $this->imagetype=$imagetype;
            $this->checkcode=$this->getcheckcode();
        }
        
        private function getcheckcode(){ //产生字符串的方法
            switch($this->type){
                case 1://数字类型的
                    $string=join('',array_rand(range(0,9),$this->num));
                break;
                case 2://字母类型的
                    $string=implode('',array_rand(array_flip(range('a','z')),$this->num));
                break;
                case 3://字母与数字混合性
                    $str='23456789abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ';
                    $s=str_shuffle($str);
                    $string=substr($s,0,$this->num);
                break;
            }
            return $string;
        }

        //定义产生画布的方法
        private function createimage(){
            $this->img=imagecreatetruecolor($this->width,$this->height);
        }
        
        //产生背景颜色,颜色要比字体的颜色浅
        private function bgcolorrand(){
            return imagecolorallocate($this->img,mt_rand(230,255),mt_rand(230,255),mt_rand(230,255));
        }
        
        //产生字体的颜色,颜色要比背景颜色深
        private function textcolorrand(){
            return imagecolorallocate($this->img,mt_rand(0,125),mt_rand(0,125),mt_rand(0,125));
        }
        
        //填充背景的颜色
        private function filledbg(){
            imagefilledrectangle($this->img,0,0,$this->width,$this->height,$this->bgcolorrand());
        }
        
        //添加干扰点
        private function filledpix(){
            for($i;$i<70;$i++){
                $x=mt_rand(2,$this->width-5);
                $y=mt_rand(2,$this->height-5);
                imagesetpixel($this->img,$x,$y,$this->textcolorrand());
            }
        }
        
        //循环写上字符
        private function writetext(){
            for($i=0;$i<$this->num;$i++){
                $x=ceil($this->width/$this->num)*$i+5;
                $y=mt_rand(5,$this->height-20);
                imagechar($this->img,5,$x,$y,$this->checkcode[$i],$this->textcolorrand());
            }
        }
        
        //输出图片
        private function output(){
            $func='image'.$this->imagetype;
            $header='content-type:image/'.$this->imagetype;
            /*----判断我们链接的这个字符串的名字是不是函数----*/
            if(function_exists($func)){
                header($header);
                $func($this->img);
            }else{
                echo '当前系统不支持这种图片的格式';
                return false;
            }
        }
        
        //获得图片的方法
        public function getimg(){
            $this->createimage();//创建画布方法
            $this->filledbg();//填充背景方法
            $this->filledpix();//填充干扰点方法
            $this->writetext();//写上随机字符方法
            $this->output();//输出图片方法
        }

        function __get($proname){
            if($proname=='checkcode'){
                return $this->$proname;
            }else{
                return false;
            }
        }

        //销毁图片资源,自动执行
        public function __destruct(){
            imagedestroy($this->img);
        }
    }

    $verify=new verify();
    $verify->getimg();
    ?>


    然成科技是一家本土的云南软件开发公司,2017年获得云南省科技厅、省财政厅、省税务局等机构认定的高新技术企业。定位于高端网站设计、系统开发、APP开发、微信公众号、浙江11选5前二直选走势图。拥有多个软著权,公司先后为多家事业单位提供服务,比如会泽文化馆、宣威文化馆、中科院昆明植物研究所等。其中中国科学院昆明植物研究所已经进行了长达4年的合作,并且还持续合作中!

    浙江体彩11选五走势:中国 · 云南 · 昆明

    然成科技微信二维码
    扫一扫关注然成微信

    浙江11选5前二直选走势图 www.whjl8.com 办公室:云南省昆明市盘龙区白云路北京路花苑3幢403(地铁2号线白云路站)

  • 葡萄牙西班牙明晨上演B组焦点战 谁才是真正铁嘴钢牙? 2019-04-17
  • 回复@不能这样啊:那你不是可以啥事不做天天甩起手耍?你自己不求上进还不准别人有所追求么? 2019-04-17
  • 人民网评:为改革创新撑腰,“为官不为”行不通了 2019-04-16
  • 【新时代 新作为 新篇章】特色枣木香菇畅销市场 2019-04-09
  • 惊坛一周汇总:稳定农产品价格,政府和市场谁都不能“旷课” 2019-04-07
  • 巴克利:詹姆斯不会去76人的,因为他需要球权 2019-04-02
  • 高考不过是人生一隅,前路满是阳光花香 2019-03-29