Asyiknya Ngoding #1

Hallooo…jumpa lagi, Kali ini saya mau berbagi tentang asyiknya bermain koding. Sebagian dari kita terkadang melupakan sisi keamanan dari sebuah sistem berbasis komputer (CBS), tapi lebih mengedepankan tampilan (maaf kalau ada yang gak sependapat). Walaupun tampilan juga merupakan hal yang harus diperhatikan, karena terkait dengan kenyamanan pengguna.
Misalnya gini, biasanya kalau kita mau mengakses sebuah sistem berbasis komputer, kita harus login terlebih dahulu. Pada saat login sering kali kita jumpai, ada informasi yang kadang kurang jelas. Kalau kita salah mengetikkan username, kita dapat juga mengetikkan password, padahal seharusnya jika username tidak ditemukan didalam database, maka gak bisa mengetik password, itu yang pertama. Yang kedua, jika kita mengetikkan username benar password salah, maka pesan yang muncul adalah “username atau password salah”. Lalu gak ada batasan maksimal kesalahan, sehingga kemungkinan ada kesempatan bagi orang lain untuk masuk ke sistem. Seharusny kita bisa belajar dari sistem mesin ATM, jika kita salah memasukkan pin sebanyak tiga kali dalam satu hari, maka akun kita diblok.
Oleh karena itu pada kesempatan ini, SWI berbagi informasi bagaimana membuat sistem yang dapat mencegah orang tidak dapat masuk ke sistem karena tidak memiliki data. Untuk kali ini sebagai contoh kita gunakan microsoft Access sebagai media latihan.
Buat sebuah database dengan nama ABK_db, kemudian buat tabel tUser, dengan struktur seperti dibawah.
Nama Field | Tipe | size |
uName | Text | 10 |
uPaswd | Text | 20 |
Status Aktif | Number | Integer |
Kemudian buat form FormLogin dengan tampilan seperti dibawah
Ubah nilai properti masing-masing objek yaitu:
Unbound yang pertama, properti name ganti menjadi Username
Unbound kedua, properti name ganti menjadi Password
Tombol pertama, properti caption isi dengan &Exit dan name isi dengan cmdExit
Tombol kedua, properti caption isi dengan &Ok, dan name isi dengan cmdOk
Langkah selanjutnya adalah menuliskan perintah VBA (Visual Basic for Application) untuk masing-masing objek. Mulai dari deklarasi variabel, dengan cara klik kanan pada area form, kemudian pilih Build Event.., dan pilih Code Builder, maka akan tampil jendela Microsoft Visual Basic. Tuliskan perintah seperti dabawah:
Option Compare Database
Option Explicit
Public vPaswd As String
Public vBag As String
Public vUser As String
Dim Salah, Sisa As Integer
Sub Tutup()
If MsgBox(“Apakah anda yakin ?”, vbQuestion + vbYesNo) = vbYes Then
DoCmd.Quit
End If
End Sub
Private Sub cmdExit_Click()
Call Tutup
End Sub
Private Sub cmdOk_Click()
DoCmd.Close acForm, “FormLogin”
DoCmd.OpenForm “formmenu”, acNormal
Form_FormMenu.xUser = vUser
End Sub
Private Sub Form_Load()
Me.Password.Enabled = False
Me.cmdOk.Enabled = False
Me.Username.Value = “”
Me.Password.Value = “”
End Sub
Private Sub Password_AfterUpdate()
On Error Resume Next
Dim oCnn As ADODB.Connection
Dim oRs As ADODB.Recordset
Dim strSql As String
Set oCnn = New ADODB.Connection
oCnn.Open CurrentProject.Connection
If vPaswd = Me.[Password].Value Then
cmdOk.Enabled = True
Else
MsgBox “Password Salah…”, vbCritical + vbOKOnly, “Informasi”
Me.Username.Enabled = False
Me.Password.SetFocus
Salah = Salah + 1
Sisa = 3 – Salah
If Salah >= 3 Then
MsgBox “Maaf, Akun Anda Diblok ” & Chr(13) & ” Karena sudah ” & _
Str(Salah) & _
“x salah Password…”, vbCritical + vbOKOnly, “Akun Terblokir”
strSql = “SELECT * FROM tUser WHERE uName='” & Me.[Username] & “‘;”
Set oRs = New ADODB.Recordset
oRs.Open strSql, oCnn, adOpenKeyset, adLockOptimistic
oRs![Status Aktif] = 0
oRs.Update
DoCmd.Close acForm, “FormLogin”
Else
MsgBox “Kesempatan Anda ” & Str(Sisa) & _
” Lagi…”, vbInformation + vbOKOnly, “Kesempatan Login”
End If
End If
oRs.Close
Set oRs = Nothing
oCnn.Close
Set oCnn = Nothing
End Sub
Private Sub Username_AfterUpdate()
On Error Resume Next
Dim oCnn As ADODB.Connection
Dim oRs As ADODB.Recordset
Dim strSql As String
Set oCnn = New ADODB.Connection
oCnn.Open CurrentProject.Connection
strSql = “SELECT * FROM tUser WHERE uName='” & Me.[Username] & “‘;”
Set oRs = New ADODB.Recordset
oRs.Open strSql, oCnn, adOpenKeyset, adLockOptimistic
If oRs.EOF Then
MsgBox “Nama User tidak ada !”, vbInformation
Me.Username.SetFocus
Else
If oRs![Status Aktif] = 0 Then
MsgBox “Status User saat ini tidak aktif, silakan hubungi Administrator !”, vbExclamation
Me.Username.SetFocus
Else
oRs![Last Login] = Now()
oRs.Update
vPaswd = oRs!uPwd
vBag = oRs![Kode Bagian]
vUser = Me.Username
Me.Username.Enabled = False
Me.Password.Enabled = True
Me.Password.SetFocus
End If
End If
oRs.Close
Set oRs = Nothing
oCnn.Close
Set oCnn = Nothing
End Sub
Jika sudah selesai, form login bisa kita coba, maka tampilannya akan seperti ini
Jika user tidak ada pada database maka akan muncul pesan seperti ini
Tapi jika user benar, maka kotak isian password akan aktif dan dapat diisi, dan kotak user name akan mati atau tidak dapat diganti. Jika password salah maka akan muncul seperti ini
Setelah tombol ok diklik maka akan muncul kotak pesan sisa kesempatan seperti gambar dibawah
Jika password salah sebanyak tiga kali, maka akan muncul kotak pesan seperti ini
Dan secara otomatis akun diblok, dan tidak bisa login selama blok belum dilepas. Akhirnya selesai, mudah-mudahan ada manfaat, terima kasih dan mohon maaf. Sampai jumpa lagi….