Cómo crear un Captcha con ASP.NET

Estrada Web Group
Administrador
Cómo crear un Captcha con ASP.NET

cómo hacer un captcha para asp.net

Primero que nada debemos saber "¿Qué es un captcha?" Y "¿Para qué lo usamos?" La mayoría de los sitios web tienen la validación Captcha.

¿Qué es el código captcha?

Código Captcha es simplemente una combinación de algunos números y caracteres que ayuda a validar el envió de un mensaje o comentario.

¿Por qué lo usamos?

Lo usamos para validar que una tarea  específica fue realmente escrita por un humano, por medio de un código que nos genera el captcha.

Manos a la obra, vamos a entrar en el tema, es decir la creación de tu propio código Captcha en ASP.Net.

Paso 1: Crea una página en visual studio llamada "CaptchCode.aspx" y añade el código fuente en el diseño de la página, como se muestra a continuación.

<div>
            <table>
                <tr>
                    <td>
                        <asp:Image ID="imgCaptcha" runat="server" 
                            ImageUrl="~/CreateCaptcha.aspx?New=1" />
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:TextBox ID="txtCaptcha" runat="server">
                        </asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Label ID="lblMessage" runat="server">
                        </asp:Label>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Button ID="btnCaptcha" runat="server" 
                            Text="Validar captcha" OnClick="btnCaptcha_Click" />
                    </td>
                </tr>
            </table>
        </div>

Nota: - Como puedes ver hay una Imagen  que me dan la ImageUrl = "~/CreateCaptcha.aspx?New= 1". Del control de imagen en CreateCaptcha.aspx vamos a escribir código para generar el código Captcha.

Paso 2: Ahora agrega una nueva página en tu aplicación "CreateCaptcha.aspx" y crea los métodos siguientes en su CreateCaptcha.aspx.vb

Imports System.Drawing
Imports System.Drawing.Imaging
Public Class CreateCaptcha
    Inherits System.Web.UI.Page
    Private rand As New Random()
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not Page.IsPostBack Then
            CreateCaptchaImage()
        End If
    End Sub

    ''' <summary>
    ''' method for create captcha image
    ''' </summary>
    Private Sub CreateCaptchaImage()
        Dim code As String = GetRandomText()
        Dim bitmap As New Bitmap(200, 60, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
        Dim g As Graphics = Graphics.FromImage(bitmap)
        Dim pen As New Pen(Color.Yellow)
        Dim rect As New Rectangle(0, 0, 200, 60)
        Dim blue As New SolidBrush(Color.DarkRed)
        Dim black As New SolidBrush(Color.White)
        Dim counter As Integer = 0
        g.DrawRectangle(pen, rect)
        g.FillRectangle(blue, rect)

        For i As Integer = 0 To code.Length - 1
            g.DrawString(code(i).ToString(), _
                         New Font("Tahoma", 10 + rand.[Next](15, 20), _
                         FontStyle.Italic), black, New PointF(10 + counter, 10))
            counter += 28
        Next
        DrawRandomLines(g)
        bitmap.Save(Response.OutputStream, ImageFormat.Gif)
        g.Dispose()
        bitmap.Dispose()

    End Sub
    ''' <summary>
    ''' Method for drawing lines
    ''' </summary>
    ''' <param name="g"></param>
    Private Sub DrawRandomLines(g As Graphics)
        Dim yellow As New SolidBrush(Color.Yellow)
        For i As Integer = 0 To 19
            g.DrawLines(New Pen(yellow, 1), GetRandomPoints())
        Next

    End Sub
    ''' <summary>
    ''' method for gettting random point position
    ''' </summary>
    ''' <returns></returns>
    Private Function GetRandomPoints() As Point()
        Dim points As Point() = {New Point(rand.[Next](0, 150), rand.[Next](1, 150)), _
                                 New Point(rand.[Next](0, 200), rand.[Next](1, 190))}
        Return points
    End Function
    ''' <summary>
    ''' Method for generating random text of 5 cahrecters as captcha code
    ''' </summary>
    ''' <returns></returns>
    Private Function GetRandomText() As String
        Dim randomText As New StringBuilder()
        Dim alphabets As String = "012345679ACEFGHKLMNPRSWXZabcdefghijkhlmnopqrstuvwxyz"
        Dim r As New Random()
        For j As Integer = 0 To 5
            randomText.Append(alphabets(r.[Next](alphabets.Length)))
        Next
        Session("CaptchaCode") = randomText.ToString()
        Return TryCast(Session("CaptchaCode"), [String])
    End Function

End Class

Paso 3: Validación de código Captcha en la página " CaptchCode.aspx.vb".

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not Page.IsPostBack Then
            imgCaptcha.ImageUrl = "~/CreateCaptcha.aspx?New=1"
        End If
    End Sub

    Protected Sub btnCaptcha_Click(sender As Object, e As EventArgs) Handles btnCaptcha.Click
        imgCaptcha.ImageUrl = "~/CreateCaptcha.aspx?New=0"
        If Session("CaptchaCode") IsNot Nothing AndAlso _
            txtCaptcha.Text = Session("CaptchaCode").ToString() Then
            lblMessage.ForeColor = Color.Green
            lblMessage.Text = "Código Captcha correcto!!"
        Else
            lblMessage.ForeColor = Color.Red
            lblMessage.Text = "Código Captcha erroneo, intentelo nuevamente!!"
        End If
    End Sub

Con estos tres sencillos pasos ya tienes un Captcha, si tienes algún comentario o una duda escríbenos y pronto te estaremos respondiendo.

Saludos y gracias por leernos!!!

Compartir artículo:

Más artículos geniales

Aprende a integrar pagos con PayPal en ASP.NET Core: Integrar el SDK de JavaScript de PayPal

Aprende a integrar pagos con PayPal en ASP.NET Core: Integrar el SDK de JavaScript de PayPal

En este artículo te enseñare a integrar el SDK de JavaScript de PayPal para utilizarlo en ASP.NET Core para recibir pagos en tu página web y te mostrare como incluir botones de PayPal en tu sitio web

Ver artículo completo

Manténgase actualizado

Obtenga excelente contenido en su bandeja de entrada todas las semanas.
Solo contenido excelente, no compartimos su correo electrónico con terceros.
Subir al inicio de la pantalla ;