Olá pessoal, hoje mostraremos como implementar um captcha básico em uma aplicação WebForm com ASP.NET.

 

Para nosso exemplo, vamos criar uma nova ASP.NET WebApplication.

 

Após criada, crie uma nova página e chame-a de Captcha.aspx.

No evento OnLoad desta página, insira o seguinte código:

 

Bitmap objBMP = new System.Drawing.Bitmap(60, 20);

Graphics objGraphics = System.Drawing.Graphics.FromImage(objBMP);

objGraphics.Clear(Color.SkyBlue);

objGraphics.TextRenderingHint = TextRenderingHint.AntiAlias;

// Fonte configurada para ser usada no texto do captcha

Font objFont = new Font("Times New Roman", 10, FontStyle.Strikeout);

string captchaValue = "";

int[] valuesArray = new int[8];

int x;

//Cria o valor randomicamente e adiciona ao array

Random autoRand = new Random();

for (x = 0; x < 8; x++)

{

    valuesArray[x] = System.Convert.ToInt32(autoRand.Next(0, 9));

    captchaValue += (valuesArray[x].ToString());

}

//Adiciona o valor gerado para o captcha na sessão

//para ser validado posteriormente

Session.Add("CaptchaValue", captchaValue);

//Desenha a imagem com o nosso texto

objGraphics.DrawString(captchaValue, objFont, Brushes.White, 3, 3);

//Determina o tipo de conteúdo da imagem do captcha

Response.ContentType = "image/GIF";

//Salva em stream

objBMP.Save(Response.OutputStream, ImageFormat.Gif);

//Libera os objeto da memória pois os mesmos não são mais necessários

objFont.Dispose();

objGraphics.Dispose();

objBMP.Dispose();

 

O código acima é o responsável por gerar o valor randomicamente para nosso captcha e renderizar o mesmo em forma de imagem.

 

Agora, na página Default.aspx, inclua a seguinte Tag:

 

<IMG height="30" alt="" src="Captcha.aspx" width="80">

 

Esta tag, exibirá a imagem do captcha gerada no OnLoad da página Captcha.aspx.

 

Adicione mais um textBox e um botão no formulário.

No evento OnClick do botão, insira o seguinte código:

 

//Verifica se o valor digitado é o mesmo que foi gerado

//pela página do captcha

if (TextBox1.Text == Session["CaptchaValue"].ToString())

{

    Label1.Text = "Valor digitado está OK";

}

else

{

    Label1.Text = "Valor digitado está errado";

}

 

Pronto pessoal, aí está nosso captcha básico implementado em ASP.Net.

 

Vamos ficando por aqui, espero que tenham gostado e que as informações passadas sejam úteis no seu dia-a-dia.

 

Um grande abraço.

Ricardo Coelho.