首页 > 语言 > PHP > 正文

实用的一个php验证码类

2024-09-04 11:44:07
字体:
来源:转载
供稿:网友
  1. <?php
  2. class ImageCode{ 
  3.  private $width;//验证码图片宽度 
  4.  private $height;//验证码图片高度 
  5.  private $codeNum;//验证码字符个数 
  6.  private $checkCode;//验证码字符 
  7.  private $image;//验证码画布 
  8.  function __construct($width=60,$height=20,$codeNum=4){ 
  9.   $this->width=$width
  10.   $this->height=$height
  11.   $this->codeNum=$codeNum
  12.   $this->checkCode=$this->createCheckCode(); 
  13.  } 
  14.   
  15.  function getcreateImage(){ 
  16.   $this->getcreateImage(); 
  17.   $this->outputText(); 
  18.   $this->setDisturbColor(); 
  19.   $this->outputImage(); 
  20.  } 
  21.  function getCheckCode(){ 
  22.   return $this->checkCode; 
  23.  } 
  24.   
  25.  private function getCreateImage(){ 
  26.   $this->image=imagecreatetruecolor($this->width,$this->height); 
  27.   $black=imagecolorallocate($this->image,255,255,255,0); 
  28.   $border=imagecolorallocate($this->image,255,255,255,255); 
  29.   imagefilledrectangle($this->image,0,0,$this->width-1,$this->height-1,$border); 
  30.  } 
  31.  
  32.  private function createCheckCode(){ 
  33.   for($i=0;$i<$this->codeNum;$i){ 
  34.    $number=rand(0,2); 
  35.    switch($number){ 
  36.     case 0: 
  37.      $rand_number=rand(48,57);//数字 
  38.      break
  39.     case 1: 
  40.      $rand_number=rand(65,90);//大写字母 
  41.      break
  42.     case 2: 
  43.      $rand_number=rand(97,122); 
  44.      break
  45.    } 
  46.    $asc=sprintf("%c",$rand_number); 
  47.    $asc_number=$asc_number.$asc
  48.   } 
  49.   return $asc_number
  50.  } 
  51.  
  52.  private function setDisturbColor(){ 
  53.   for($i=0;$i<=100;$i++){ 
  54.    $color=imagecolorallocate($this->image,255,255,255); 
  55.    imagesetpixel($this->image,rand(1,$this->width-2),rand(1,$this->height-2),$color); 
  56.   } 
  57.  } 
  58.  
  59.  private function outputImage(){ 
  60.   if(imagetypes()&IMG_GIF){ 
  61.    header("Content_type:image/gif"); 
  62.    imagegif($this->image); 
  63.   }elseif(imagetypes()&IMG_JGP){ 
  64.    header("Content_type:image/jpeg"); 
  65.    imagejpeg($this->image,"",0.5); 
  66.   }else{//开源代码Vevb.com 
  67.    die("PHP不支持图像创建"); 
  68.   } 
  69.  } 
  70.  
  71.  function __destruct(){ 
  72.   imagedestroy($this->image); 
  73.  } 
  74.  
  75. ?> 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表