28% de descuento del curso en SQL Server

Estrada Web Group Estrada Web Group
Crear Captcha con ASP.NET
Estrada Web Group
Estrada Web Group
Estrada Web Group Estrada Web Group
Calificar:
03 julio ASP.NET

Cómo crear un Captcha con ASP.NET

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:

Cargando...
Descarga el código fuente

Obten el código del sistema de gestión de proyectos.

Shape