Ver Mensaje Individual
  #6 (permalink)  
Antiguo 10/11/2012, 22:19
rolygc
 
Fecha de Ingreso: abril-2009
Ubicación: en un lugar de la mancha
Mensajes: 236
Antigüedad: 15 años, 7 meses
Puntos: 38
Respuesta: ¿Creéis que este captcha es medianamente seguro?

Lo ke yo he visto ke siempre se hace, es se contruye un string random, y se guarda en una variable de session, se imprime en una imagen y depsues se compara con el valor enviado por el formulario si es igual se ejecuta el script si no parar el codigo y mostrar el error.


creas tu script de imagen.php
Código PHP:
session_start();  

$captcha '';

for ( 
$c 0$c 5$c++ ) 
{  
        
$captcha .= chr(rand(97122));  
}

$_SESSION['captcha'] = $captcha;  

// definir el directorio de tipo de letras
$fonts 'fonts/';  

// imagen base de 200px de ancho por 80 de alto
$imagen imagecreatetruecolor20080 );  

// definir colores
$negro  imagecolorallocate$imagen00);  
$rojo    imagecolorallocate$imagen20010090 ); 
$blanco imagecolorallocate$imagen255255255 ); 

// crear un rectangulo de fondo blanco
imagefilledrectangle$imagen0039999$blanco );  

// imprimir el texto random creado en la imagen de color rojo, con tamano 30, con angulo 0, 10px a la izierda y 40 de alto  
imagettftext $imagen3001040$rojo$fonts 'arial.ttf'$_SESSION['captcha'] );  

// le dices al navegador ke tipo de imagen haras
header'Content-type: image/jpeg' );  

// imprimir la imagen
imagejpeg$imagen ); 
tu formulario
Código PHP:

<form method="post" action="script.php">
   <
input type="hiddden" name="envio" value="1" />

   <
label for="nombre">Nombre: </label>
   <
input type="text" name="nombre" id="nombre" />  

   <
label for="email">Email: </label>
   <
input type="text" name="email" id="email" />

   <
img src="imagen.php"/>  
   <
label for="captcha">Entra el codigo: </label>
   <
input type="text" name="captcha" id="captcha" />  
   
   <
input type="submit" value="Enviar" /> 
</
form
tu script.php
Código PHP:

session_start
();  

if ( isset( 
$_POST['enviado'] ) && $_POST['enviado'] == )
{  
   if ( 
$_POST['captcha'] == $_SESSION['captcha'] ) 
   {  
      echo 
'Codigo verificado OK';     
   }
   else
   {
       echo 
'Codigo NO valido';  
    }