<?
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 ;
?>
/* *
* @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 ;
?>