Red de conocimiento informático - Conocimiento del nombre de dominio - ¡Necesitamos urgentemente un código fuente de código de verificación PHP que funcione correctamente!

¡Necesitamos urgentemente un código fuente de código de verificación PHP que funcione correctamente!

/**

* Clase de código de verificación

*

* Conceptos básicos antispam para PHP GD Lib< / p>

* @autor Eric,

* @versión 1.0

* @copyright Ereesoft Inc.2009

* @update 2009-05-14 22:32:05

* @example

* session_ sratr();

* $vcode = nuevo Vcode() ;

* $vcode->setLength(5);

* $_SESSION['vcode'] = $vcode->paint() // Usar cifrado MD5

*/

class Vcode{

/**

* @var $width ancho de la imagen, calcula automáticamente el ancho de la imagen de verificación, el programa Cálculo automático

*/

private $ ancho

/**

* @var $altura altura de la imagen verificación altura de la imagen

p>

*/

private $height;

/**

* @var $longitud código de verificación longitud código de verificación longitud

*/

private $length

/**

* @var $bgColor Color de fondo de la imagen predeterminado aleatorio Verificación Color de fondo de la imagen

*/

private $bgColor;

/**

* @var $fontColor color del texto color del código de verificación

*/

private $fontColor;

/**

* @var $dotNoise Número de línea de ruido

* /

private $dotNoise;

/**

* @var $lineNoise El número de líneas de ruido y el número de líneas de interferencia

*/

private $lineNoise;

/**

* @var $im Recursos de imagen Recursos de procesamiento de imágenes de Guangdong

*/

privado $im;

/**

* void Vcode::Vcode()

*

* Constructor

p>

*/

función pública Vcode(){

$this->dotNoise = 20;//inicializar el recuento de ruido

$this- >lineNoise = 2;//inicializar el número de líneas de interferencia

}

/**

* void Vcode:: setLength(integer $length)

*

* Establecer longitud del código de verificación

* @access public

* @param

entero $longitud;

* @return void

*/

función pública setLength($longitud){

$this-> longitud = $ longitud;

}

/**

* void Vcode::setBgColor(string $bgColor)

*

*

* Establecer el color de fondo de la imagen de verificación

* @access public

* @param string $bgColor por ejemplo: For ejemplo: # ffffffff; puedes usar escritura hexadecimal directamente en css, pero no se puede abreviar

* @return void

*/

public function setBgColor( $ bgColor){

$this->bgColor = sscanf($bgColor, '#%2x%2x%2x%2x');

}

/**

* void Vcode: .setFontColor(string $fontgColor)

*

* Establece el color del texto de la imagen de verificación

* @access public

* @param string $ fontColor Por ejemplo: #ffffffff Puedes usar css para escribirlo directamente en hexadecimal, pero no se puede abreviar

* @return void

*/

Función pública setFontColor($fontColor){

$ this-> %2x%2x') ;

}

/**

* void Vcode::setDotNoise(entero $num)

*/

* * Cuántos puntos de ruido dibujar

* @access public

* @param integer $num Demasiados reducirá el rendimiento

* @return void

*/

public function setDotNoise($num){

$this-> dotNoise = $num;// Después de configurar manualmente la cantidad de ruido, se sobrescribirá la configuración inicial

}

/**

* void Vcode: . setLineNoise(integer $num)

*

* Cuántas líneas de ruido dibujar

* @access public

* @param integer $num Demasiados reducirán el rendimiento

* @return void

*/

public function setLineNoise($num){

$ this-> lineNoise = $num;// Configurar manualmente el número de líneas de interferencia sobrescribirá la configuración inicial

}

/**

* String Vcode::randString()

*

* Crea caracteres aleatorios para generar cadenas aleatorias

* @access private

* @ return String

*/

función privada randString(){

$string = strtoupper(md5(microtime() .mt_rand(0,9));

return substr($string, 0, $this->length);

}

/**

* void Vcode::drawDot()

*

* Dibuja el ruido de puntos aleatoriamente de acuerdo con el número establecido de puntos y puntos color.

* @access private

*/

función privada drawDot(){

for($i=0; $i< $this->dotNoise;$i++){

$color = imagecolorallocate($this->im,

mt_rand(0,255),

mt_rand(0,255 ),

mt_rand(0,255),

mt_rand(0,255),

mt_rand(0,255)); //generar color aleatorio

imagesetpixel($this->im,

mt_rand(0,$this->ancho),

mt_rand(0,$this->alto),

$color);//Pinta ruido en coordenadas generadas aleatoriamente

}

}

/**

* void Vcode ::drawLine()

*

* Dibuja ruido de línea en colores aleatorios y dibuja líneas de interferencia aleatoriamente

* @access private

*/

función privada drawLine(){

for($i=0; $i<$this->lineNoise; $i++){

$ color = imagecolorallocate($this->im,

mt_rand(0,255),

mt_rand(0,255),

mt_rand(0,255)); generar colores

imageline($this->im,

mt_rand(0,$this->width),

mt_rand(0,$this-> alto) ,

mt_rand(0,$this->ancho),

mt_rand(0,$this->alto),

$color) ;/ / Dibuja líneas de interferencia en coordenadas generadas aleatoriamente

}

}

/**

* String Vcode::paint ( )

*

*

* Crear imagen y salida

* @access public

* @ return código de verificación de cadena cifrado por MD5

*/

función pública paint(){

if(empty($this->length)) $this -> length = 4;//código de verificación La longitud predeterminada es 4

$this-> width = $this->length*12+4;//Calcular el ancho de la imagen CAPTCHA

$this->height = 20;/Desarrollar altura de imagen CAPTCHA

$th

is->im = imagecreate ($this->width, $this->height);//crear lienzo

if(empty($this->bgColor) || vacío($this-> fontColor)){// Si el color de primer plano y el color de fondo no están configurados, entonces todos los colores son aleatorios

// Evite que el color de primer plano y el color de fondo estén demasiado cerca El rango aleatorio del color de fondo (0-130) es diferente del color de primer plano. El rango aleatorio (131-255) está separado

imagecolorallocate( $this->im,

mt_rand(0,130),

<. p> mt_rand(0,130) ,

mt_rand(0,130));

$this->randString();

for($i=0; $ i<$this->length ;$i++){

$fontColor = imagecolorallocate($this->im,

mt_rand(131,255),

mt_rand (131,255),

mt_rand(131,255)) 33 imagecolorallocate 35 imagecolorallocate 34 >im, 3,

$i*18,

mt_rand( 0,8),

$randString{$i},

$fontColor

} else {// Si el color de fondo y el color de primer plano están configurados , no se utilizan colores aleatorios

imagecolorallocate( $this->im,

$this->bgColor[0],

$this->bgColor [1],

$this->bgColor[2]);

$StrandString = $this->randString();

$fontColor = imagecolorallocate ($this->im,

$this-> ; fontColor[0],

$this->fontColor[1],

$this- >fontColor[2]);

for($i=0;$i<$this->length;$i++){

imagestring($this->im, 3,

$i*18,

mt_rand(0,8),

$randString{$i},

$fontColor);// La altura de cada carácter CAPTCHA permanece aleatoria

}

}

$this->drawDot();//ruido de dibujo

$this->drawLine();//dibujar línea de interferencia

imagepng($this->im);

imagedestroy($this-& gt ;estoy);

return md5($randString);//devuelve el código de verificación cifrado MD5, que se puede colocar directamente en la sesión

}

}

a continuación ¿Es el método de llamada

session_sratr();

$vcode = new Vcode();

$vcode->setLength(5);

$_SESSION['vcode'] = $vcode->paint();// Para ser cifrado por MD5