Desenvolvimento - ASP. NET
Inserindo Captcha com C#
Neste artigo será demonstrado com um pequeno exemplo como inserir o CAPCTHA em um formulário usando a linguagem c# e o Visual Studio 2005.
por Fernando MedeirosOlá, neste meu primeiro artigo aqui na Linha de Código, quero demonstrar com um pequeno exemplo como utilizar o CAPCTHA.
CAPTCHA é um acrônimo da expressão "Completely Automated Public Turing test to tell Computers and Humans Apart" (teste de Turing público completamente automatizado para diferenciar entre computadores e humanos).
Um tipo comum de CAPTCHA requer que o usuário identifique as letras ou números de uma imagem distorcida, às vezes com a adição de uma seqüência obscurecida das letras ou dos dígitos que apareça na tela.
CAPTCHAs são utilizados para impedir que softwares automatizados execute ações que degradam a qualidade do serviço de um sistema dado, devido à despesa do abuso ou do recurso.(Origem: Wikipédia).
Para mais informações sobre o conceito bem como os criadores acesse: http://www.captcha.net/
Dedos nas teclas
1º passo: Criar uma página com um controle de imagem, dois labels, um textBox, um button. Estou usando o Visual Studio 2005.
- Acesse o menu file, new, Project, escolha a linguagem C# e o tipo web.
- Coloquei o nome da aplicação de MyCaptcha.
- Inserir os controles citados acima.
Listagem 1: Default.aspx
<div> <div> <asp:Label ID="lbl_Nome" runat="server" Text="Nome:"> <asp:TextBox ID="txt_Nome" runat="server" MaxLength="6"> </div> <div> <asp:Image ID="im_BitMap" height="20" runat="server" src="ImagemCaptcha.aspx" Width="144px" /> <asp:Button ID="btn_Enviar" runat="server" Text="Enviar" OnClick="btn_Enviar_Click" /> </div> <asp:Label ID="lbl_Mensagem" runat="server"> </div>
OBS: Não esqueça de referenciar a classe componente da imagem acima.
Listagem 2: Default.aspx.cs
protected void btn_Enviar_Click(object sender, EventArgs e) { //Veificação de autenticidade if (Page.IsValid && (txt_Nome.Text.ToString() == Session["strRandom"].ToString())) { lbl_Mensagem.Text = "Página validada!"; } else { lbl_Mensagem.Text = "Digite os dados conforme a imagem!"; } }
2º passo: Criar outra página conforme feito no 1º passo, chamei-a de ImagemCaptcha, na qual utilizaremos apenas o code-behind desta para construir o código que é responsável por gerar a imagem e controlar as mudanças dos valores da imagem.
- Importe as classes: System.Drawing, System.Drawing.Imaging e System.Drawing.Text.
- No Page_Load da página coloque o seguinte código:
- ImagemCaptcha.aspx
- Não acrescentar nenhum código.
Listagem 3: ImagemCaptcha.aspx.cs
protected void Page_Load(object sender, EventArgs e) { //Instanciando a classe BitMap e passando as dimensões da imagem Bitmap bitmap = new Bitmap(144, 20); Graphics grafics = Graphics.FromImage(bitmap); //Background da imagem grafics.Clear(Color.Black); grafics.TextRenderingHint = TextRenderingHint.SystemDefault; //Atributos do texto/números Font font = new Font("Arial", 10, FontStyle.Strikeout); //Declaração da string que receberá os valores string strRandom = string.Empty; //Declaração de um array com o tamanho de caracteres desejado int[] array = new int[6]; //Instanciando a classe Random Random random = new Random(); //Loop para escolha randômica dos valores e concatenação dos mesmos for (int i = 0; i < contenttype = "image/GIF"> }
Bom, feito isto é só rodar sua aplicação. Segue as telas abaixo para exemplificar.

Figura 1: Dados incorretos!

Figura 2: Dados corretos!

Figura 3: Página validada!
Conclusão
Espero que esta pequena amostra da utilização do Captcha com números seja útil para o seu aprendizado. Em outra oportunidade mostrarei um exemplo utilizando letras e números. Se você tiver alguma dúvida é só deixar um post que responderei com todo prazer.
Fernando Medeiros.