Selasa, 21 Juni 2011

Cara Membuat Captcha Dengan VisualBasic.Net

Captcha pasti sering anda temukan saat ingin berkomentar atau beregistrasi pada sebuah situs.
Fungsi sebenarnya dari captcha untuk mencegah bot/SPAM/sesuatu yang bukan manusia inputkan.

Nah, Sekarang kita tidak menerapkannya pada website tapi pada Visual Basic.Net
Security kode bisa gunakan untuk sebuah verifikasi data.

Ok, kita mulai saja.

Buat sebuah Form baru. Masukan component PictureBox (1), TextBox (1), Button (1).
lalu susun seperti gambar dibawah ini.




Pada Form1 Declaration tepat dibawah Public Class Form1 masukan Variable berikut

Dim DrawingFont As New Font("Arial", 20)
Dim CaptchaImage As New Bitmap(140, 40)
Dim CaptchaGraf As Graphics = Graphics.FromImage(CaptchaImage)
Dim Alphabet As String =
"AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"
Dim CaptchaString, TickRandom As String
Dim ProcessNumber As Integer

Lalu Kita buat Method baru dengan nama GenerateCaptcha.
Anda tinggal copy kode dibawah ini, dan paste paada Form1 anda. Maka Method akan langsung dibuat secara otomatis.
Private Sub GenerateCaptcha()
        ProcessNumber = My.Computer.Clock.LocalTime.Millisecond
        If ProcessNumber < 521 Then
            ProcessNumber = ProcessNumber \ 10
            CaptchaString = Alphabet.Substring(ProcessNumber, 1)
        Else
            CaptchaString = CStr(My.Computer.Clock.LocalTime.Second \ 6)
        End If
        ProcessNumber = My.Computer.Clock.LocalTime.Second
        If ProcessNumber < 30 Then
            ProcessNumber = Math.Abs(ProcessNumber - 8)
            CaptchaString += Alphabet.Substring(ProcessNumber, 1)
        Else
            CaptchaString += CStr(My.Computer.Clock.LocalTime.Minute \ 6)
        End If
        ProcessNumber = My.Computer.Clock.LocalTime.DayOfYear
        If ProcessNumber Mod 2 = 0 Then
            ProcessNumber = ProcessNumber \ 8
            CaptchaString += Alphabet.Substring(ProcessNumber, 1)
        Else
            CaptchaString += CStr(ProcessNumber \ 37)
        End If
        TickRandom = My.Computer.Clock.TickCount.ToString
        ProcessNumber = Val(TickRandom.Substring(TickRandom.Length - 1, 1))
        If ProcessNumber Mod 2 = 0 Then
            CaptchaString += CStr(ProcessNumber)
        Else
            ProcessNumber = Math.Abs(Int(Math.Cos(Val(TickRandom)) * 51))
            CaptchaString += Alphabet.Substring(ProcessNumber, 1)
        End If
        ProcessNumber = My.Computer.Clock.LocalTime.Hour
        If ProcessNumber Mod 2 = 0 Then
            ProcessNumber = Math.Abs(Int(Math.Sin(Val(My.Computer.Clock.LocalTime.Year)) * 51))
            CaptchaString += Alphabet.Substring(ProcessNumber, 1)
        Else
            CaptchaString += CStr(ProcessNumber \ 3)
        End If
        ProcessNumber = My.Computer.Clock.LocalTime.Millisecond
        If ProcessNumber > 521 Then
            ProcessNumber = Math.Abs((ProcessNumber \ 10) - 52)
            CaptchaString += Alphabet.Substring(ProcessNumber, 1)
        Else
            CaptchaString += CStr(My.Computer.Clock.LocalTime.Second \ 6)
        End If
        CaptchaGraf.Clear(Color.White)

        For hasher As Integer = 0 To 5
            CaptchaGraf.DrawString(CaptchaString.Substring(hasher, 1), DrawingFont, Brushes.Black, hasher * 20 + hasher + ProcessNumber \ 200, (hasher Mod 3) * (ProcessNumber \ 200))
        Next
        PictureBox1.Image = CaptchaImage
    End Sub

Klik 2 kali pada button Check. Lalu beri kode dibawah ini.

If TextBox1.Text = "" Then
MsgBox("Mohon Masukan Kode Verifikasi", MsgBoxStyle.Information)
GenerateCaptcha()
ElseIf TextBox1.Text = CaptchaString Then
MsgBox("Kode Benar." + Chr(13) + "Coba yang lainya", MsgBoxStyle.Information)
TextBox1.Clear()
GenerateCaptcha()
Else
MsgBox("Kode Salah !", MsgBoxStyle.Exclamation)
TextBox1.Clear()
GenerateCaptcha()
End If
 
kode diatas akan mengeksikusi inputan yang kita masukan pada InputText nantinya.
Klik 2x Form anda. Lalu pada Method Load tambahkan kode dibawah ini yang fungsinya untuk meng-generate Captcha.

GenerateCaptcha()

Yang Terakhir Pilih TextBox1 dengan Method KeyPress. Lalu masukan kode dibawah ini

If e.KeyChar = Chr(13) Then Button2.PerformClick()



Selamat mencoba. Semoga tutorial kali ini berguna dan bermanfaat, terimakasih.

1 komentar: