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.