Publicidad

Captcha, generar códigos numéricos desde ASP.NET


Por Alex el 25/11/2007 , Comentar el artículo

Comparte este artículo:        




Últimamente estos código numéricos se utilizan mucho a la hora de rellenar formularios de todo tipo gracias a los spammers y robots que graban en automáticamente. Estos códigos captcha son fáciles de generar a través de un script en c#.


Captcha, generar códigos numéricos desde ASP.NET

Últimamente estos código numéricos se utilizan mucho a la hora de rellenar formularios de todo tipo gracias a los spammers y robots que graban en automáticamente. Estos códigos captcha son fáciles de generar a través de un script en c#.

En el ejemplo vamos a generar un código numérico de 5 cifras y una letra todo de forma aleatoria. Para esto creamos una página .aspx e incluimos una imagen:

<asp:Image ID="Image1" ImageUrl="captcha.ashx" runat="server" />

Lo primero que vemos es que la URL de la imagen es un script captcha.ashx (el tipo de página es un controlador genérico) y en este script escribiremos el código para generar la imagen. El código es el siguiente:

Decimos al script que lo que devuelve por pantalla es una imagen

context.Response.ContentType = "image/GIF";

Creamos la imagen

Bitmap imagen_GIF = new System.Drawing.Bitmap(80, 30);
Graphics grafico = System.Drawing.Graphics.FromImage(imagen_GIF);
grafico.Clear(Color.Gainsboro);

Definimos el tipo de fuente a utilizar

Font tipo_fuente = new Font("Comic Sans", 12, FontStyle.Bold);

string randomNum = string.Empty;
Random autoRand = new Random();

Generamos los numeros aleatorios que vamos a mostrar en la imagen

for (int x = 0; x < 5; x++) {
 randomNum += System.Convert.ToInt32(autoRand.Next(0, 9)).ToString();
}

En el 5 numero será una letra mayúscula por eso hacemos el random entre los rangos comprendidos entre los números 65 y 90 que se corresponden a las letras A y Z

int i_letra = System.Convert.ToInt32(autoRand.Next(65, 90));

Convertimos el numero obtenido en letra

string letra = ((char)i_letra).ToString();
randomNum += letra;

Lo guardamos en una sesión para después verificar que se entra el numero correctamente.

context.Session["RandomNumero"] = randomNum;
grafico.DrawString(randomNum, tipo_fuente, Brushes.Black, 5, 5);

Devolvemos el grafico.

imagen_GIF.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif);

Como podéis ver el código para genera la imagen es sencillo y la imagen quedaría así:

Imagen

Le ponemos una caja de texto y un botón para validar lo entrado en la caja de texto y ya tenemos el código captcha funcionando.

Imagen

Y esto es todo, tenéis el código para bajaros en c#

Enlaces relacionadas:

Código del artículo 

Saludos,
Alex.


Si te ha gustado el artículo compartelo en:        


Publicidad

También puede interesarte:

Limpiar datos de un combobox en winforms.

Limpiar datos de un combobox en winforms.

Por Alex, el 23/03/2010

Crear, copiar y borrar bases de datos SQL Server desde c#.

Crear, copiar y borrar bases de datos SQL Server desde c#.

Por Alex, el 07/03/2010

Escribir en un excel desde c#.

Escribir en un excel desde c#.

Por Alex, el 04/03/2010

Llenar un Repeater o DataList con un DataTable.

Llenar un Repeater o DataList con un DataTable.

Por Alex, el 29/12/2008

El evento SelectedIndexChanged no funciona

El evento SelectedIndexChanged no funciona

Por Alex, el 26/12/2008

Crear un DataSet vacío

Crear un DataSet vacío

Por Alex, el 26/12/2008


Añadir un comentarios:

Nombre:
Email: (no se publica el email)




SIGUENOS EN

ARCHIVO

Publicidad

.