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….

Mungkin Anda juga menyukai

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan.