Class sharing of PHP verification code generated by individuals

  • 2021-07-13 04:46:08
  • OfStack

This verification code class can be used directly, and you can also refer to it!

Where the class member codestr is the generated verification code string:


<?php
/**
 *  Verification code 
 */
class Code{
 
  // 1.  Define individual members   There are width, height, canvas, number of words, type and painting type 
   
  private $width; // Width 
  private $height; // Height 
  private $num; // Verification code words 
  private $imgType; // Generate picture type 
  private $Type; // String type  1,2,3 3 Options  1  Pure number  2  Pure lowercase letters  3  Mix of upper and lower case numbers 
  private $hb; // Canvas 
  public $codestr; //  Verification code string 
 
  public function __construct($height=20,$num=4,$imgType="jpeg",$Type=1){
    $this->width = $num*20;
    $this->height = $height;
    $this->num = $num;
    $this->imgType = $imgType;  
    $this->Type = $Type; 
    $this->codestr = $this->codestr();
    $this->zuhe();
  }
 
  // 2.  Define a random string fetch function 
  private function codestr(){
    switch($this->Type){
     
      case 1:   //  Type is 1  Get 1-9 Random number 
        $str = implode("",array_rand(range(0,9),$this->num));
        break;
      case 2:   //  Type is 2  Get a-z Random lowercase letters 
        $str = implode("",array_rand(array_flip(range(a,z)),$this->num));
        break;
      case 3:   //  Type is 3  Get a number , Lowercase letter , Capital letters   Mixing 
        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.  Initialize canvas image resources 
  private function Hb(){
    $this->hb = imagecreatetruecolor($this->width,$this->height); 
  }
 
  // 4.  Generate background color 
  private function Bg(){
    return imagecolorallocate($this->hb,rand(130,250),rand(130,250),rand(130,250)); 
  }
 
  // 5.  Generate font color 
  private function Font(){
    return imagecolorallocate($this->hb,rand(0,100),rand(0,100),rand(0,100));  
  }
 
  // 6.  Fill the background color 
  private function BgColor(){
    imagefilledrectangle($this->hb,0,0,$this->width,$this->height,$this->Bg()); 
  }
 
  // 7.  Interference point 
  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.  Random line   Arc 
  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.  Writing 
  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.  Output 
  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 Library does not have such an image "); 
    }
  }
 
  // 11.  Assemble 
  private function zuhe(){
    $this->Hb();
    $this->BgColor();
    $this->ganrao();
    $this->huxian();
    $this->xiezi();
    $this->OutImg(); 
  }  
 
  public function getCodeStr(){
    return $this->codestr;    
  }
}
?>

Related articles: