¡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 p >
*/
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
* / p>
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