<?php
/**
* @name CheckNum_Class.php
* @abstract 生成验证码类,验证码由随机字母和随机数组成
* @author 感染源
* @copyright 2007
*/
class CheckNum_Class
{
//初始验证码数组
private $VerifyStr = array(
'Q','W','E','E','T','Y','U','I','O','P','A','S','D','F',
'G','H','J','K','L','Z','X','C','V','B','N','M','0','1',
'2','3','4','5','6','7','8','9');
private $ArrayId; //初始验证码数组下标
private $VerifyStrLen; //初始验证码长度
private $R_VerifyStr = ''; //返回验证码
private $R_VerifyStrLen; //返回验证码的长度
private $Im; //图像操作标识
private $BgColor; //图像背景颜色
private $ImWidth; //图像宽度
private $ImHeight; //图像高度
private $FontSize; //验证码大小
private $FontX; //验证码显示起始X位置
private $FontY; //验证码显示起始Y位置
private $FontColor; //验证码颜色
private $PixColor; //干扰符颜色
private $PixX; //干扰符位置
private $PixY; //干扰符位置
private $PixAmount; //干扰度
function __construct($pImSet)
{
/*
* @var array $pImSet
*/
$this->ImWidth = $pImSet['w']; //宽
$this->ImHeight = $pImSet['h']; //高
$this->PixAmount = $pImSet['p']; //干扰度
$this->Im = imagecreate($this->ImWidth,$this->ImHeight); //建立画布
//设置背景色
$this->BgColor = imagecolorallocate($this->Im,$pImSet['r'],$pImSet['g'],$pImSet['b']);
}
function __destruct()
{
imagedestroy($this->Im);
}
function Show_Verify($pFont)
{
/*
* @var array $pFont
*/
header("Content-type:image/png");
$this->FontSize = $pFont['s']; //验证码文字大小
//设置验证码显示颜色
$this->FontColor = imagecolorallocate($this->Im,$pFont['r'],$pFont['g'],$pFont['b']);
$this->R_VerifyStrLen = $pFont['l'];//验证码显示位数
$this->VerifyStrLen = count($this->VerifyStr);
//验证码输入位置
$this->FontX = round($this->FontSize/2);
$this->FontY = round($this->FontSize/2);
//生成验证码
for($i=0;$i<$this->R_VerifyStrLen;$i++)
{
$this->ArrayId = rand(0,($this->VerifyStrLen-1));
$this->R_VerifyStr .= $this->VerifyStr[$this->ArrayId];
}
//在图片显示验证码
imagestring($this->Im,$this->FontSize,$this->FontX,$this->FontY,$this->R_VerifyStr,$this->FontColor);
//生成干扰点
for($j=0;$j<$this->PixAmount;$j++)
{
$this->PixX = rand(0,$this->ImWidth);
$this->PixY = rand(0,$this->ImHeight);
$this->PixColor = imagecolorallocate($this->Im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($this->Im,$this->PixX,$this->PixY,$this->PixColor);
}
imagepng($this->Im); //输入验证码图片
}
function Get_Verify()
{
return $this->R_VerifyStr; //返回验证码
}
}
//TestCode
$pImset = array('w'=>55,'h'=>25,'p'=>140,'r'=>130,'g'=>160,'b'=>180);
$img = new CheckNum_Class($pImset);
$pFont = array('s'=>10,'r'=>0,'g'=>0,'b'=>255,'l'=>5);
$img->Show_Verify($pFont);
$img = NULL;
?>
504

被折叠的 条评论
为什么被折叠?



