zoukankan      html  css  js  c++  java
  • 验证码处理函数

    <?php
    include_once("global.php");
    //===============================
    class ValidationCode
    {
        private $width,$height,$codenum;
        public $checkcode;     //产生的验证码
        private $checkimage;    //验证码图片
        private $disturbColor = ''; //干扰像素
        
        function ValidationCode($width='80',$height='20',$codenum='4')
        {
           $this->width=$width;
           $this->height=$height;
           $this->codenum=$codenum;
        }
        function outImg()
        {
           //输出头
           $this->outFileHeader();
           //产生验证码
           $this->createCode();
           //产生图片
           $this->createImage();
           //设置干扰像素
           $this->setDisturbColor();
           //往图片上写验证码
           $this->writeCheckCodeToImage();
           imagepng($this->checkimage);
           imagedestroy($this->checkimage);
        }
        private function outFileHeader()
        {
           ob_clean();
           header ("Content-type: image/png");
        }
        function GetfourStr($len) 
        { 
          $chars_array = array( 
            "1", "2", "3", "4", "5", "6", "7", "8", "9",
            "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", 
            "l", "m", "n", "p", "q", "r", "s", "t", "u", "v", 
            "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", 
            "H", "I", "J", "K", "L", "M", "N", "P", "Q", "R", 
            "S", "T", "U", "V", "W", "X", "Y", "Z", 
          ); 
          $charsLen = count($chars_array) - 1; 
          $outputstr = ""; 
          for ($i=0; $i<$len; $i++) 
          { 
            $outputstr .= $chars_array[mt_rand(0, $charsLen)]; 
          } 
          return $outputstr; 
        }
        private function createCode()
        {
           $this->checkcode = strtoupper($this->GetfourStr($this->codenum));
        }
        private function createImage()
        {
            $this->checkimage = @imagecreate($this->width,$this->height);
            $back = imagecolorallocate($this->checkimage,255,255,255);
            $border = imagecolorallocate($this->checkimage,0,0,0);  
            imagefilledrectangle($this->checkimage,0,0,$this->width - 1,$this->height - 1,$back); // 白色底
            imagerectangle($this->checkimage,0,0,$this->width - 1,$this->height - 1,$border);   // 黑色边框
        }
        private function setDisturbColor()
        {
            for($i=0;$i<=200;$i++)
            {
                $this->disturbColor = imagecolorallocate($this->checkimage, rand(0,255), rand(0,255), rand(0,255));
                imagesetpixel($this->checkimage,rand(2,128),rand(2,38),$this->disturbColor);
            }
        }
    
        private function writeCheckCodeToImage()
        {
            for ($i=0;$i<$this->codenum;$i++)
            {
                $bg_color = imagecolorallocate ($this->checkimage, rand(0,255), rand(0,128), rand(0,255));
                $x = rand(0,7)+floor($this->width/$this->codenum)*$i;
                $y = rand(0,$this->height-15);
                imagechar ($this->checkimage, rand(5,8), $x, $y, $this->checkcode[$i], $bg_color);
            }
        }
        function __destruct()
        {
           unset($this->width,$this->height,$this->codenum);
        }
    }
    //===============================
    $width=$_GET['w']?$_GET['w']:"80";
    $height=$_GET['h']?$_GET['h']:"33";
    $image = new ValidationCode($width,$height,'4'); 
    $image->outImg();
    $_SESSION["auth"] = $image->checkcode;
    ?>
  • 相关阅读:
    v-charts 使用markline标线
    覆盖率平台(5)- 生成覆盖率报告
    覆盖率平台(4)- 测程启动
    覆盖率平台(3)- 测程
    覆盖率平台(2)- 服务配置
    vue路由this.route.push跳转页面不刷新
    递归对比json
    ssh远程执行遇到的一些坑
    免密git clone/git pull
    git用远程代码强制覆盖本地代码
  • 原文地址:https://www.cnblogs.com/Asatic/p/5196088.html
Copyright © 2011-2022 走看看