<?php |
/* |
more & original php framwork |
copyright (c) 2007 - 2008 ismole inc. |
$id: mooseccode.class.php 38 2008-03-19 07:39:17z aming $ |
*/ |
!defined( 'IN_MOOPHP' ) && exit ( 'Access Denied' ); |
class MooSeccode { |
//note:生成的验证码 |
var $cecCode = '' ; |
//note:生成的图片 |
var $codeImage = '' ; |
//note:干扰素 |
var $disturColor = '' ; |
//note:验证码的图片宽度 |
var $codeImageWidth = '80' ; |
//note:验证码的图片高度 |
var $codeImageHeight = '20' ; |
//note:验证码位数 |
var $cecCodeNum = 4; |
|
/** |
* 输出头部 |
* |
*/ |
function outHeader() { |
header( "content-type: image/png" ); |
} |
|
/** |
* 生成验证码 |
* |
*/ |
function createCode() { |
$this ->cecCode = strtoupper ( substr (md5(rand()),0, $this ->cecCodeNum)); |
return $this ->cecCode; |
} |
/** |
* 生成验证码图片 |
* |
*/ |
function createImage() { |
$this ->codeImage = @imagecreate( $this ->codeImageWidth, $this ->codeImageHeight); |
imagecolorallocate( $this ->codeImage, 200, 200, 200); |
return $this ->codeImage; |
} |
|
/** |
* 加入图片干拢素 |
* |
*/ |
function setDisturbColor() { |
for ( $i =0; $i <=128; $i ++) { |
$this ->disturColor = imagecolorallocate( $this ->codeImage, rand(0,255), rand(0,255), rand(0,255)); |
imagesetpixel( $this ->codeImage,rand(2,128),rand(2,38), $this ->disturColor); |
} |
} |
/** |
* 设置验证码图片的大小 |
* |
* @param integer $width: |
* @param integer $height: |
* @return boolean; |
*/ |
function setCodeImage( $width , $height ) { |
if ( $width == '' || $height == '' ) { return false; } |
$this ->codeImageWidth = $width ; |
$this ->codeImageHeight = $height ; |
return true; |
} |
/** |
* 在图片上写入验证码 |
* |
* @param integer $num |
*/ |
function writeCodeToImage( $num = '' ) { |
if ( $num != '' ) { $this ->cecCodeNum = $num ;} |
for ( $i = 0; $i <= $this ->cecCodeNum; $i ++) { |
$bg_color = imagecolorallocate ( $this ->codeImage, rand(0,255), rand(0,128), rand(0,255)); |
$x = floor ( $this ->codeImageWidth / $this ->cecCodeNum) * $i ; |
$y = rand(0, $this ->codeImageHeight - 15); |
imagechar( $this ->codeImage, 5, $x , $y , $this ->cecCode[ $i ], $bg_color ); |
} |
} |
|
/** |
* 把验证码的值写入session |
* |
* @param string $sname |
*/ |
function writeSession( $sname ) { |
session_start(); |
session_register( $sname ); |
$_SESSION [ $sname ] = md5( $this ->cecCode); |
} |
/** |
* 输出验证码图片 |
* |
* @param integer $width |
* @param integer $height |
* @param integer $num |
* @param string $sname |
*/ |
function outCodeImage( $width = '' , $height = '' , $num = '' , $sname = 'code' ) { |
if ( $width !== '' || $height !== '' ) { |
$this ->setCodeImage( $width , $height ); |
} |
$this ->outHeader(); |
$this ->createCode(); |
$this ->createImage(); |
$this ->setDisturbColor(); |
$this ->writeCodeToImage( $num ); |
$this ->writeSession( $sname ); |
imagepng( $this ->codeImage); |
imagedestroy( $this ->codeImage); |
} |
} |