<? 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 ; ?>