福州麻将免费

Information for details

php常用類分享之驗證碼圖片類

驗證碼生成類:

功能:生成驗證碼。

本文實例講述了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開發、微信公眾號、微信小程序開發。擁有多個軟著權,公司先后為多家事業單位提供服務,比如會澤文化館、宣威文化館、中科院昆明植物研究所等。其中中國科學院昆明植物研究所已經進行了長達4年的合作,并且還持續合作中!

  • 福州麻将免费 福彩3d投注选号 河南快赢481 167棋牌app最新版安装 闲来麻将代理申请 大赢家比分 在校大学生如何写代码赚钱 足球竞彩比分数据中心 组选包胆是什么意思 网上福利彩票充值赚钱是真的 湖南快乐10分开奖查询 看七星彩直码信息 后三组选包胆技巧 手机麻将软件开发 天津快乐10分规则 体彩排列三今天限号表 007即时比分网