| 
 | 
 
 
            万能php验证码类,供大家参考,具体内容如下 
code.php是验证码类,类的名称最好和文件名的名称一样,这样有利于我们的查看。 
code.php 
number=$number; 
    $this->codeType=$codeType; 
    $this->width = $width; 
    $this->height= $height; 
     
    //生成验证码函数 
    $this->code = $this ->createCode(); 
     
  } 
  public function __get($name){ 
    if ($name == 'code'){ 
      return $this->code; 
    } 
    return false; 
  } 
  /*获取验证码*/ 
  public function getCode() { 
    return $this->code; 
  } 
  /*图像资源销毁*/ 
  public function __destruct(){ 
    imagedestroy($this->image); 
  } 
  protected function createCode(){ 
    //通过你的验证码类型生成验证码 
    switch ($this->codeType){ 
      case 0: //纯数字 
        $code = $this->getNumberCode(); 
        break; 
      case 1: //纯字母的 
        $code = $this->getCharCode(); 
        break; 
      case 2: //数字和字母混合 
        $code = $this->getNumCharCode(); 
        break; 
      default: 
        die('不支持此类验证码类型'); 
    } 
    return $code; 
  } 
  protected function getNumberCode(){ 
    $str = join('', range(0, 9)); 
    return substr(str_shuffle($str),0, $this->number); 
  } 
  protected function getCharCode(){ 
    $str = join('', range('a', 'z')); 
    $str = $str.strtoupper($str); 
    return substr(str_shuffle($str),0,$this->number); 
  } 
  protected function getNumCharCode(){ 
    $numstr = join('',range(0, 9)); 
    $str =join('', range('a', 'z')); 
    $str =$numstr.$str.strtoupper($str); 
    return substr(str_shuffle($str), 0,$this->number); 
  } 
  protected function createImage(){ 
    $this->image = imagecreatetruecolor($this->width,  
        $this->height); 
  } 
  protected function fillBack(){ 
    imagefill($this->image, 0, 0, $this->lightColor()); 
  } 
  /*浅色*/ 
  protected function lightColor(){ 
    return imagecolorallocate($this->image, mt_rand(133,255), mt_rand(133,255), mt_rand(133,255)); 
  } 
  /*深色*/ 
  protected function darkColor(){ 
    return imagecolorallocate($this->image, mt_rand(0,120), mt_rand(0,120), mt_rand(0,120)); 
  } 
  protected function drawChar(){ 
    $width = ceil($this->width / $this->number); 
    for ($i=0; $inumber;$i++){ 
      $x = mt_rand($i*$width+5, ($i+1)*$width-10); 
      $y = mt_rand(0, $this->height -15); 
      imagechar($this->image, 5, $x, $y, $this->code[$i], $this->darkColor()); 
    } 
  } 
  protected function drawLine(){ 
    for ($i=0;$iimage,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$this->darkColor()); 
    } 
  } 
  protected function drawDisturb(){ 
    for ($i=0;$iwidth); 
      $y=mt_rand(0, $this->height); 
      imagesetpixel($this->image, $x, $y, $this->lightColor()); 
    } 
  } 
  protected function show(){ 
    header('Content-Type:image/png'); 
    imagepng($this->image); 
  } 
  public function outImage(){ 
//     创建画布 
    $this->createImage(); 
//     填充背景色 
    $this->fillBack(); 
//     将验证码字符串花到画布上 
    $this->drawChar(); 
//     添加干扰元素 
    $this->drawDisturb(); 
//     添加线条 
    $this->drawLine(); 
//     输出并显示 
    $this->show(); 
  } 
} 
test.php是new一个新的验证码,并把它保存到session中,为我们验证码的验证起到保存和存储的作用。 
test.php 
getCode(); 
$code->outImage(); 
login.php就是最后的验证。 
login.php 
  
    
    
      
        
        
        
        *{margin:0px;padding:0px;}  
        ul{  
          width:400px;  
          list-style:none;  
          margin:50px auto;  
        }  
          
        li{  
          padding:12px;  
          position:relative;  
        }  
          
        label{  
          width:80px;  
          display:inline-block;  
          float:left;  
          line-height:30px;  
        }  
          
        input[type='text'],input[type='password']{  
          height:30px;  
        }  
          
        img{  
          margin-left:10px;  
        }  
          
        input[type="submit"]{  
          margin-left:80px;  
          padding:5px 10px;  
        }  
        
      
      
        
          
            
            用户名:  
              
            
            
            密码:  
              
            
            
            验证码:  
              
             
)  
  
            
            
              
            
          
        
      
   
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。 
             
             
您可能感兴趣的文章:php图片验证码代码PHP验证码类代码( 最新修改,完全定制化! )一个漂亮的php验证码类(分享)PHP生成图片验证码、点击切换实例PHP使用CURL实现对带有验证码的网站进行模拟登录的方法完美解决thinkphp验证码出错无法显示的方法php发送短信验证码完成注册功能PHP写的简单数字验证码实例php图像验证码生成代码php实现网页端验证码功能 
         |   
 
 
 
 |