Cómo generar código de verificación usando PHP
El principio de usar PHP para generar códigos de verificación: use la biblioteca GD de PHP para generar imágenes con códigos de verificación y guarde los códigos de verificación en la sesión. El proceso general de usar PHP para generar códigos de verificación es:
1. Generar una imagen png
2. 3. Establezca el color y el estilo de la fuente;
4. Genere un código de verificación aleatorio de 4 dígitos;
5.
4. Genere aleatoriamente un código de verificación de 4 dígitos;
5. Ajuste el ángulo de rotación y la posición para dibujar cada carácter en la imagen. Ajuste el ángulo de rotación y la posición de cada carácter generado y dibújelo en la imagen png;
6. Agregue líneas de ruido e interferencia para evitar que la máquina de registro analice la imagen original para descifrar maliciosamente el código de verificación;<. /p >
7. Generar la imagen;
8. Liberar la memoria ocupada por la imagen.
session_start();?
getCode(4,60,20);?
función?getCode($num,$w,$h)?{
$código?
for($i?=?0;? $i? $num;? $i++)?{
$código = rand(0, 9 );?
}?
// ¿También puedes usar rand(1000,9999) para generar directamente un código de verificación de 4 dígitos?
// ¿Escribir el código de verificación generado en la sesión para su verificación?
$_SESSION["helloweba_num"]? =?$code;?
//¿Crear una imagen y definir valores de color?
header("Tipo de contenido:?image/PNG");?
$im =?imagecreate($w,? $h);?
$negro?=?imagecolorallocate($im,?0,?0,?0);?
$gris?=?imagecolorallocate($im,?200,?200,?200);?
$bgcolor?=?imagecolorallocate($im,?255,?255,?255);?
/¿Rellenar fondo?
imagefill($im,?0,?0,? $gray);?
/ ¿Dibujar borde?
imagerectangle($im,?0,?0,? $w-1,? $h-1,? $black);?
// Dibuja dos líneas de puntos aleatorias ¿Para distraer?
$estilo?=?array?($negro,$negro,$negro,$negro,$negro,$negro,?
$gris,$gris,$gris, $gris,$gris?
);?
imagesetstyle($im,? $estilo);?
$y1 = rand(0,? $ h);?
$y2?=?rand(0,? $h);?
$y3?=?rand(0,? $h);? p>
$y4?=?rand(0,? $h);?
imageline($im,?0,? $y1,? $w,? $y3,?IMG_COLOR_STYLED) ;?
imageline($im,?0,? $y2,? $w,? $y4,?IMG_COLOR_STYLED);?
// Generar aleatoriamente una gran cantidad de negros líneas en el lienzo Haga clic para distraer;?
for($i?=?0;? $i?80;? $i++)?{
imagesetpixel($im,?rand(0,? $w ),?rand(0,? $h),? $black);?
}?
//Muestra números aleatoriamente en el lienzo, el espaciado horizontal y la posición del ¿Los caracteres se generan aleatoriamente dentro del rango de fluctuación?
$strx =?rand(3,?8);?
for($i?=?0;? $i? $num;? $i++)? {
$strpos = rand(1,?6);?
imagestring($im,?5,?$strx,?$strpos,?substr($código,? $i,?1),?$black);?
$strx?
}?
imagepng($im); // ¿Imagen de salida?
imagede
stroy($im);//¿Liberar la memoria ocupada por la imagen?
}
?