欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP类的运用解决方案

程序员文章站 2022-06-05 20:08:55
...
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);