Ver Mensaje Individual
  #3 (permalink)  
Antiguo 22/06/2011, 13:10
adri_ana
 
Fecha de Ingreso: junio-2011
Mensajes: 7
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: header("Content-type: image/jpeg")

Este es el código que puse para el captcha, el cual funciona, pero omite todo lo que hay en el body, es decir solo muestra el captcha.

Código PHP:
Ver original
  1. // Configuración:
  2. $N = 2;     // Nivel de emborronado { 2, 3, 4, ... }
  3. $J = 100;   // Calidad JPEG { 0, 1, 2, 3, ..., 100 }
  4. $M = 5;     // Margen.
  5. $L = 6;     // Número de letras.
  6. $C = FALSE; // Case sensitive.
  7.  
  8. // Acceso a los objetos de sesión:
  9.  
  10. // Indicamos que vamos a generar una imagen ¡no una página HTML!
  11. header("Content-type: image/jpeg");
  12.  
  13. // Inicializamos cualquier posible valor previo de captcha:
  14. $_SESSION['CAPTCHA'] = '';
  15. // Metemos tantos caraceteres aleatorios como sean precisos:
  16. for( $n = 0; $n < $L; $n++ )
  17.     $_SESSION['CAPTCHA'] .= C();
  18.  
  19. // Si no es case sensitive lo ponemos todo en minúsculas:
  20. if( ! $C )
  21.     $_SESSION['CAPTCHA'] = strtolower( $_SESSION['CAPTCHA'] );
  22.  
  23. // Dimensiones del captcha:
  24. $w = 2 * $M + $L * imagefontwidth ( 5 );
  25. $h = 2 * $M +      imagefontheight( 5 );
  26.  
  27. // Creamos una  imagen:
  28. $i = imagecreatetruecolor( $w, $h );
  29.  
  30. // La rellenamos de blanco:
  31. imagefill( $i, 0, 0, imagecolorallocate( $i, 255, 255, 255 ) );
  32.  
  33. // Elegimos aleatoriamente un ángulo de emborronado:
  34. $A = ( rand() % 180 ) / 3.14;
  35.  
  36. // Realizamos iteraciones de emborronado:
  37. for( $n = 0; $n < $N; $n++ ) {
  38.  
  39.     // Factor de interpolación, va de 1.0 a 0.0
  40.     $t = 1.0 - $n / ( $N - 1.0 );
  41.  
  42.     // El radio se va centrando a medida que se hace nítido:
  43.     $r = $M * $t;
  44.  
  45.     // El color va siendo cada vez más oscuro:
  46.     $c = 255 * $t;
  47.     $c = imagecolorallocate( $i, $c, $c, $c );
  48.  
  49.     // Trazamos dos líneas aleatorias para dificultar más las cosas:
  50.     imageline( $i, $M, rand( $M, $h - $M ), $w - $M, rand( $M, $h - $M ), $c );
  51.     imageline( $i, rand( $M, $w - $M ), $M, rand( $M, $w - $M ), $h - $M, $c );
  52.  
  53.     // Pasamos un filtro gaussiano:
  54.     imagefilter( $i, IMG_FILTER_GAUSSIAN_BLUR );
  55.  
  56.     // Dibujamos el texto en el sentido del ángulo y radio de desplazamiento:
  57.     imagestring( $i, 5, $M + $r * cos( $A ), $M + $r * sin( $A ), $_SESSION['CAPTCHA'], $c );
  58.  
  59.     // Pasamos otro filtro gaussiano:
  60.     imagefilter( $i, IMG_FILTER_GAUSSIAN_BLUR );
  61. }
  62.  
  63. // Escribimos la imagen como un JPEG en el buffer de salida:
  64. imagejpeg( $i, NULL, $J );
  65.  
  66. // Liberamos la imagen:
  67.  
  68. // Devuelve un caracter aleatorio:
  69. function C() {
  70.     $W = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  71.     return substr( $W, rand() % strlen( $W ), 1 );
  72. }