Let's chek it on!
1. Pertama buka dulu visual studio agan , kemudian buat sebuah form
dengan nama "frmLogin" . Silahkan terserah cara agan mendesainnya , yang
jelas objek yang ada yaitu :
- 3 buah textbox ( texbox untuk menampung username , password , dan captcha ).
- 2 buah button ( button login dan button refresh captcha ).
- 1 buah picture box untuk menampilkan kode captcha .
hasilnya seperti ini gan :
silahkan kreasikan sendiri imaginasinya agan untuk mendesainnya .
2. Jika sudah lanjut ke tahap berikutnya yaitu buatlah sebuah modul
untuk koneksi database mysql dengan vb.net nya . Klik menu project pada
bagian atas kemudian pilih add module , dan copas saja gan code berikut
ini :
Imports MySql.Data.MySqlClient.MySqlConnection
Module modKoneksi
Public conn As New MySql.Data.MySqlClient.MySqlConnection
Public Sub koneksi(ByVal server As String, ByVal user As String, ByVal pass As String, _
ByVal db As String, ByVal port As String)
Try
If conn.State = ConnectionState.Closed Then
conn.ConnectionString = "DATABASE=" & db _
& ";SERVER = " & server _
& ";user id=" & user & ";password=" & pass & ";port=" & port & ";charset=utf8"
conn.Open()
End If
Catch ex As MySql.Data.MySqlClient.MySqlException
MsgBox("Koneksi ke server gagal", MsgBoxStyle.Critical, "USB Monitoring")
End Try
End Sub
Public Sub disconnect()
Try
conn.Open()
Catch ex As MySql.Data.MySqlClient.MySqlException
End Try
End Sub
End Module
simpan code diatas dengan nama modKoneksi atau terserah agan aja dech mau pake nama apa.
3. Jika sudah , klik 2x pada form login , dan pada baris paling atas , importlah mysql data . Berikut kodenya :
Imports MySql.Data.MySqlClient
jika pada waktu ketika imports pilihan mysql belum ada , maka caranya ,
klik menu project dan pilih add reference , kemudian cari MySQL data ,
jika sudah klik OK.
dan selajutnya buat deklarasi variable untuk objeknya , copas saja gan kode berikut ini :
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
jika sudah , kemudian buat sebuah fungsi untuk mengenerate kode captcha nya , seperti ini :
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
PictureBox2.Image = CaptchaImage
End Sub
kemudian tambahkan baris kode dibawah ini pada form_load nya :
Private Sub frmLogin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
GenerateCaptcha()
koneksi("localhost", "root", "WnbZNXD7Hrmr4cLC", "dbUSB", "")
End Sub
kemudian tambahkan kode untuk memanggil fungsi generate captcha diatas
tadi pada form refresh sehingga , jika diklik maka kode akan diacak lagi
. kodenya seperti ni :
GenerateCaptcha()
dan yang terakhir pada button loginnya copas kode berikut ini gan :
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If txtUsername.Text = "" Then
MsgBox("Username masih kosong", vbExclamation, "USB Monitoring")
txtUsername.Focus()
Exit Sub
ElseIf txtPassword.Text = "" Then
MsgBox("Password masih kosong", vbExclamation, "USB Monitoring")
txtPassword.Focus()
Exit Sub
Else
If txtCaptcha.Text = CaptchaString Then
Dim myAdapter As New MySqlDataAdapter
Dim sqlQuery = "SELECT * FROM user WHERE username='" + txtUsername.Text
+ "' AND password='" + txtPassword.Text + "'"
Dim myCommand As New MySqlCommand
myCommand.Connection = conn
myCommand.CommandText = sqlQuery
myAdapter.SelectCommand = myCommand
Dim myData As MySqlDataReader
myData = myCommand.ExecuteReader()
If myData.HasRows = 0 Then
MsgBox("Username atau Password yang anda masukkan salah.! Kemungkinan
juga username anda belum terdaftar. Hubungi development.!",
vbExclamation, "USB Monitoring")
txtUsername.Text = ""
txtPassword.Text = ""
txtCaptcha.Text = ""
txtUsername.Focus()
Call GenerateCaptcha()
Else
Me.Hide()
frmUtama.StatusStrip1.Items(0).Text = "Login As : " & txtUsername.Text
frmUtama.Show()
End If
Else
MsgBox("Kode Captcha yang anda masukkan salah.!", vbExclamation, "USB Monitoring")
txtUsername.Text = ""
txtPassword.Text = ""
txtCaptcha.Text = ""
txtUsername.Focus()
Exit Sub
End If
End If
End Sub
Jadi kode lengkapnya kayak gini gan :
Imports MySql.Data.MySqlClient
Public Class frmLogin
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
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
PictureBox2.Image = CaptchaImage
End Sub
Private Sub frmLogin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
GenerateCaptcha()
koneksi("localhost", "root", "WnbZNXD7Hrmr4cLC", "dbUSB", "")
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
GenerateCaptcha()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If txtUsername.Text = "" Then
MsgBox("Username masih kosong", vbExclamation, "USB Monitoring")
txtUsername.Focus()
Exit Sub
ElseIf txtPassword.Text = "" Then
MsgBox("Password masih kosong", vbExclamation, "USB Monitoring")
txtPassword.Focus()
Exit Sub
Else
If txtCaptcha.Text = CaptchaString Then
Dim myAdapter As New MySqlDataAdapter
Dim sqlQuery = "SELECT * FROM user WHERE username='" + txtUsername.Text
+ "' AND password='" + txtPassword.Text + "'"
Dim myCommand As New MySqlCommand
myCommand.Connection = conn
myCommand.CommandText = sqlQuery
myAdapter.SelectCommand = myCommand
Dim myData As MySqlDataReader
myData = myCommand.ExecuteReader()
If myData.HasRows = 0 Then
MsgBox("Username atau Password yang anda masukkan salah.! Kemungkinan
juga username anda belum terdaftar. Hubungi development.!",
vbExclamation, "USB Monitoring")
txtUsername.Text = ""
txtPassword.Text = ""
txtCaptcha.Text = ""
txtUsername.Focus()
Call GenerateCaptcha()
Else
Me.Hide()
frmUtama.StatusStrip1.Items(0).Text = "Login As : " & txtUsername.Text
frmUtama.Show()
End If
Else
MsgBox("Kode Captcha yang anda masukkan salah.!", vbExclamation, "USB Monitoring")
txtUsername.Text = ""
txtPassword.Text = ""
txtCaptcha.Text = ""
txtUsername.Focus()
Exit Sub
End If
End If
End Sub
End Class
selesai dech gan , silahkan agan test hasilnya sendiri ,
see uuuu next time . . . .