hackers! Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?
18 de Marzo de 2010, 08:21:58
Inicio Buscar Ayuda Ingresar Registrarse
Noticias: Ayuda a mantener organizados los foros utilizando en tus post los iconos correspondientes: Para preguntas, para aportes, para temas resueltos
Gracias gente :
Ecuador!Guatemala!!UruguayBrasilRepublica DominicanaBolivia *USAColombia!ESPAÑA!Venezuela!Chile **El Peru!ArgentinaMexico
+  Foros pOrtal Hacker
|-+  Programacion
| |-+  Desarrollo Web
| | |-+  PHP (Moderadores: carlmycol, shevchenko)
| | | |-+  Captcha: Diferenciando automaticamente humanos de maquinas con PHP
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Captcha: Diferenciando automaticamente humanos de maquinas con PHP  (Leído 199 veces)
Que buscas?..
shevchenko
Una vez un ordenador me venció jugando al ajedrez, pero no me opuso resistencia cuando pasamos al kick boxing
Moderador
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 1,191


Si la vida no te sonríe… ¡Hazle cosquillas!


Ver Perfil WWW
« : 25 de Mayo de 2009, 02:47:04 »

Los CAPTCHA o Completely Automated Public Turing test to tell Computers and Humans Apart (Prueba de Turing pública y automática para diferenciar a máquinas y humanos) son aquellas imagen con caracteres que aparecen en los formularios para detectar cuando el formulario es llenado por un humano o por un bot (programa especial para automatizar procesos)

El Formulario
Lo primero que necesitamos para mostrar un CAPTCHA es crear aleatoreamente la secuencia de caracteres que va aparecer en la imagen y guardarla en una variable de session ($_SESSION) para comprobarla luego con la ingresada por el usuario...

<?
session_start();

$captcha_texto = "";

for ($i = 1; $i <= 6; $i++) {
$captcha_texto .= caracter_aleatorio();
}

$HTTP_SESSION_VARS["captcha_texto_sessi on"] = $captcha_texto;

function caracter_aleatorio() {

mt_srand((double)microtime()*1000000);

$valor_aleatorio = mt_rand(1,3);

switch ($valor_aleatorio) {
case 1:
$valor_aleatorio = mt_rand(97, 122);
break;
case 2:
$valor_aleatorio = mt_rand(48, 57);
break;
case 3:
$valor_aleatorio = mt_rand(65, 90);
break;
}

return chr($valor_aleatorio);
}

?>

Luego insertamos el formulario...

<p>Captcha: Formularios mas seguros.</p>
<hr size="1" noshade="noshade" />
<p>Por favor ingrese el codigo que ve en la imagen, sino puede leerlo actualize la pagina.</p>
<p align="center"><img src="crear_imagen.php?<?php echo SID; ?>" /></p>
<form action="verificar.php" method="POST">
<p>Ingrese el codigo:
<input name="texto_ingresado" type="text" id="texto_ingresado" size="30" />
<input type="submit" name="Submit" value="OK" />
</p>
</form>
<p
>Nota: El codigo es sensible a las mayusculas y minisculas</p>

Notemos el código en negrita, la forma de llamar a la imagen es "dinámica" osea no estamos llamando directamente a la imagen sino que llamamos a un script php que crea la imagen dinámicamente basandose en la secuencia de caracteres creada anteriormente.

La imagen
Ahora en el archivo "crear_imagen.php" debemos crear la imagen mostrando los caracteres creados anteriormente y guardados en una variable de session...

<?

//creamos la imagen definiendo el tamaño del alto y el ancho (150, 40)
$captcha_imagen = imagecreate(150,40);

//creamos el color negro para el fondo y blanco para los caracteres
$color_negro = imagecolorallocate ($captcha_imagen, 0, 0, 0);
$color_blanco = imagecolorallocate ($captcha_imagen, 255, 255, 255);

//pintamos el fondo con el cplor negro creado anteriormente
imagefill($captcha_imagen, 0, 0, $color_negro);

//iniciamos la session para obtener los caracteres a dibujar
session_start();
$captcha_texto = $HTTP_SESSION_VARS["captcha_texto_sessi on"];

//dibujamos los caracteres de color blanco
imagechar($captcha_imagen, 4, 20, 13, $captcha_texto[0] ,$color_blanco);
imagechar($captcha_imagen, 5, 40, 13, $captcha_texto[1] ,$color_blanco);
imagechar($captcha_imagen, 3, 60, 13, $captcha_texto[2] ,$color_blanco);
imagechar($captcha_imagen, 4, 80, 13, $captcha_texto[3] ,$color_blanco);
imagechar($captcha_imagen, 5, 100, 13, $captcha_texto[4] ,$color_blanco);
imagechar($captcha_imagen, 3, 120, 13, $captcha_texto[5] ,$color_blanco);

//indicamos que lo que vamos a mostrar es una imagen
header("Content-type: image/jpeg");

//mostramos la imagen
imagejpeg($captcha_imagen);

?>

Verificar
Ahora lo que nos queda por delante es verificar que el código ingresado por el usuario coincida con el CAPTCHA creado, esto lo hacemos en el archivo "verificar.php"...

<?

session_start();

$texto_ingresado = $HTTP_POST_VARS["texto_ingresado"];
$captcha_texto = $HTTP_SESSION_VARS["captcha_texto_sessi on"];

if ($texto_ingresado == $captcha_texto) {
echo "Usted ingreso el codigo correctamente.";
} else {
echo "El texto ingresado no coincide. Por favor intentelo de nuevo!";
}

session_unset();
session_destroy();

?>


Autor: Mauro Rondinelli
http://www.elguruprogramador.com.ar/usuarios/perfil.asp?id=1
En línea

Páginas: [1] Ir Arriba Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión
Powered by SMF 1.1.11 | SMF © 2006-2009, Simple Machines LLC hacker descargas gratis
Ranking-Hits