>백엔드 개발 >PHP 튜토리얼 > PHP类的运用解决方案

PHP类的运用解决方案

WBOY
WBOY원래의
2016-06-13 13:15:27823검색

PHP类的运用
我是新手刚接触类的概念,现在我在网上找到了一个生成验证码的类,要怎么才能在需要输出验证码的地方输出类中生成的验证码呢?类中的代码是这样的:
class AuthCode  
{  
var $image;  
var $sBgcolor;  
var $nWidth;  
var $nHeight;  
var $nLen;  
var $bNoise;  
var $nNoise;  
var $bBorder;  
var $aFontlist;  
function AuthCode()  
{  
  $this->sBgcolor = "#FFFFFF";  
  $this->nWidth = 70;  
  $this->nHeight = 25;  
  $this->nLeftMargin = 5;  
  $this->nRightMargin = 5;  
  $this->nTopMargin = 3;  
  $this->nBottomMargin = 2;  
  $this->nLen = 4;  
  $this->bNoise = true;  
  $this->nNoisePoint = 50;  
  $this->nNoiseLine = 5;  
  $this->bBorder = true;  
   
  $this->aFontlist = "arial.ttf";  
}  
   
function OutputImg()  
{  
  $this->image = "";  
  $this->image = imagecreate($this->nWidth, $this->nHeight);  
  $back = $this->getcolor($this->sBgcolor);  
  imagefilledrectangle($this->image, 0, 0, $this->nWidth, $this->nHeight, $back);  
  $size = ($this->nWidth - $this->nLeftMargin - $this->nRightMargin)/$this->nLen;  
  if($size>($this->nHeight - $this->nTopMargin - $this->nBottomMargin))  
  $size=$this->nHeight - $this->nTopMargin - $this->nBottomMargin;  
   
  $left = ($this->nWidth-$this->nLen*($size+$size/10))/2 + $this->nLeftMargin;  
  $code = "";  
  for ($i=0; $inLen; $i++)  
  {  
  $randtext = rand(0, 9);  
  $code .= $randtext;  
  $textColor = imagecolorallocate($this->image, rand(0, 100), rand(0, 100), rand(0, 100));  
  $font = $this->aFontlist;  
  $randsize = rand($size-$size/10, $size+$size/10);  
  $location = $left+($i*$size+$size/10);  
  imagettftext($this->image, $randsize, rand(-18,18), $location, rand($size, $size+$size/5) + $this->nTopMargin, $textColor, $font, $randtext);  
  }  
  if($this->bNoise == true) $this->setnoise();  
  $_SESSION['yzm'] = md5($code);  
  $bordercolor = $this->getcolor("#FFFFFF");  
  if($this->bBorder==true) imagerectangle($this->image, 0, 0, $this->nWidth-1, $this->nHeight-1, $bordercolor);  
  header("Content-type: image/png");  
  imagepng($this->image);  
  imagedestroy($this->image);  
}  
function setnoise()//设置噪点  
{  
  for ($i=0; $inNoiseLine; $i++){  
  $randColor = imagecolorallocate($this->image, rand(0, 255), rand(0, 255), rand(0, 255));  
  imageline($this->image, rand(0, $this->nWidth), rand(0, $this->nHeight), rand(0, $this->nWidth), rand(0, $this->nHeight), $randColor);  
  }  
   
  for ($i=0; $inNoisePoint; $i++){  
  $randColor = imagecolorallocate($this->image, rand(0, 255), rand(0, 255), rand(0, 255));  
  imagesetpixel($this->image, rand(0, $this->nWidth), rand(0, $this->nHeight), $randColor);  

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.