千家信息网

PHP实现的验证码生成类分享

发表于:2024-10-19 作者:千家信息网编辑
千家信息网最后更新 2024年10月19日,本篇内容介绍了"PHP实现的验证码生成类分享"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!其中类成员
千家信息网最后更新 2024年10月19日PHP实现的验证码生成类分享

本篇内容介绍了"PHP实现的验证码生成类分享"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

其中类成员codestr是生成的验证码字符串:

width = $num*20;    $this->height = $height;    $this->num = $num;    $this->imgType = $imgType;      $this->Type = $Type;     $this->codestr = $this->codestr();    $this->zuhe();  }   // 2. 定义随机获取字符串函数  private function codestr(){    switch($this->Type){           case 1:   // 类型为1 获取1-9随机数        $str = implode("",array_rand(range(0,9),$this->num));        break;      case 2:   // 类型为2 获取a-z随机小写字母        $str = implode("",array_rand(array_flip(range(a,z)),$this->num));        break;      case 3:   // 类型为3 获取数字,小写字母,大写字母 混合        for($i=0;$i<$this->num;$i++){          $m = rand(0,2);          switch($m){            case 0:              $o = rand(48,57);              break;            case 1:              $o = rand(65,90);              break;            case 2:              $o = rand(97,122);              break;           }          $str .= sprintf("%c",$o);        }        break;         }          return $str;    }    // 3. 初始化画布图像资源  private function Hb(){    $this->hb = imagecreatetruecolor($this->width,$this->height);   }   // 4. 生成背景颜色  private function Bg(){    return imagecolorallocate($this->hb,rand(130,250),rand(130,250),rand(130,250));   }   // 5. 生成字体颜色  private function Font(){    return imagecolorallocate($this->hb,rand(0,100),rand(0,100),rand(0,100));    }   // 6. 填充背景颜色  private function BgColor(){    imagefilledrectangle($this->hb,0,0,$this->width,$this->height,$this->Bg());   }   // 7. 干扰点  private function ganrao(){    $sum=floor(($this->width)*($this->height)/3);    for($i=0;$i<$sum;$i++){      imagesetpixel($this->hb,rand(0,$this->width),rand(0,$this->height),$this->Bg());      }  }   // 8. 随机直线 弧线  private function huxian(){    for($i=0;$i<$this->num;$i++){      imageArc($this->hb,rand(0,$this->width),rand(0,$this->height),rand(0,$this->width),rand(0,$this->height),rand(0,360),rand(0,360),$this->Bg());        }    }   // 9. 写字  private function xiezi(){    for($i=0;$i<$this->num;$i++){      $x=ceil($this->width/$this->num)*$i;       $y=rand(1,$this->height-15);      imagechar($this->hb,5,$x+4,$y,$this->codestr[$i],$this->Font());    }    }   // 10. 输出  private function OutImg(){    $shuchu="image".$this->imgType;     $header="Content-type:image/".$this->imgType;    if(function_exists($shuchu)){      header($header);      $shuchu($this->hb);     }else{      exit("GD库没有此类图像");     }  }   // 11. 拼装  private function zuhe(){    $this->Hb();    $this->BgColor();    $this->ganrao();    $this->huxian();    $this->xiezi();    $this->OutImg();   }     public function getCodeStr(){    return $this->codestr;      }}?>

"PHP实现的验证码生成类分享"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

0