Untuk memproteksi program yang dibuat termasuk data -data didalamnya perlu ditambahkan suatu form login. Dengan form login kita dapat mengatur hak akses untuk form-form yang ingin ditampilkan atau dirahasiakan dari user.
Adakalanya seorang user lupa dengan password yang pernah dibuat. Padahal kita tahu user hanya mengetahui program jadinya, tentu ia akan merasa kesulitan. Nah untuk mengatasi hal ini maka dibuatlah tombol "lupa password". Di tombol lupa password ini kita dapat mendapatkan kembali password kita dengan mengisi data di dalam form lupa passwod. Jika data yang kita isikan sesuai dengan data yang pernah kita isikan maka program akan menampilkan password kita.
Sebelum membuat form login kita membuat terlebih dahulu form user untuk mendaftar user baru dengan mengisi form user ini. Saya memakai Acces sebagai databasenya.
Yang pertama dapat kita lakukan membuat tabel_pegguna:
Field Name Data Type
id_pengguna Text
nm_pengguna Text
password_pengguna Text
pertanyaan Text
jawaban Text
Rancang form_user seperti dibawah:
Koding:
Dim cek As Boolean
Dim query As String
Sub bersihkan()
txtpassword_pengguna.Text = ""
txtnm_pengguna.Text = ""
txtid_pengguna.Text = ""
txttanya.Text = ""
txtjawab.Text = ""
End Sub
Sub Aktifkan()
txtpassword_pengguna.Locked = False
txtnm_pengguna.Locked = False
txtid_pengguna.Locked = False
txttanya.Locked = False
txtjawab.Locked = False
End Sub
Sub TdkAktifkan()
txtpassword_pengguna.Locked = True
txtnm_pengguna.Locked = True
txtid_pengguna.Locked = True
txttanya.Locked = True
txtjawab.Locked = True
End Sub
Sub Tampilkan()
txtid_pengguna = recordset.Fields("id_pengguna")
txtnm_pengguna.Text = recordset.Fields("nm_pengguna")
txtpassword_pengguna.Text = recordset.Fields("nm_pengguna")
txttanya.Text = recordset.Fields("pertanyaan")
txtjawab.Text = recordset.Fields("jawaban")
End Sub
Sub tampilgrid()
Call NomorUrut
fg.Cols = 6
fg.ColWidth(0) = 500
fg.ColWidth(1) = 1500
fg.ColWidth(2) = 1500
fg.ColWidth(3) = 1300
fg.ColWidth(4) = 1700
fg.ColWidth(5) = 1500
fg.TextMatrix(0, 0) = "No"
fg.TextMatrix(0, 1) = "Id Pangkat"
fg.TextMatrix(0, 2) = "Nama Pangkat"
fg.TextMatrix(0, 3) = "password_pengguna"
fg.TextMatrix(0, 4) = "pertanyaan"
fg.TextMatrix(0, 5) = "jawaban"
End Sub
Sub tabel()
Set recordset = koneksi.Execute("select*from tbpengguna")
Set fg.DataSource = recordset
tampilgrid
End Sub
Sub semula()
bersihkan
TdkAktifkan
cmdtambah.Enabled = True
cmdsimpan.Enabled = False
cmdhapus.Enabled = False
cmdbatal.Enabled = False
cmdubah.Enabled = False
fg.Enabled = True
labelaman.Visible = False
End Sub
Private Sub fg_Click()
pesan = ""
fg.Col = 1
fg.ColSel = fg.Cols - 1
End Sub
Private Sub fg_DblClick()
cmdhapus.Enabled = True
cmdubah.Enabled = True
cmdbatal.Enabled = True
cmdtambah.Enabled = False
labelaman.Visible = True
Dim j As Integer
j = fg.Row
Set recordset = New ADODB.recordset
'membuka tabel pegawai di baris satu kolom 2
recordset.Open "select*from tbpengguna where id_pengguna='" & fg.TextMatrix(j, 1) & "'", koneksi, adOpenDynamic, adLockOptimistic
If recordset.BOF Then
MsgBox " Data Tidak ADa"
Else
If fg.Rows <> 1 Then
txtid_pengguna = recordset!id_pengguna
txtnm_pengguna.Text = recordset!nm_pengguna
txtpassword_pengguna.Text = recordset!password_pengguna & ""
txttanya.Text = recordset!pertanyaan
txtjawab.Text = recordset!jawaban
Enabled = True
'cbotingkat_dikum.Enabled = False
Else
Exit Sub
End If
End If
End Sub
Private Sub Form_Activate()
txtid_pengguna.MaxLength = 5
txtnm_pengguna.MaxLength = 30
txtpassword_pengguna.MaxLength = 6
txttanya.MaxLength = 50
txtjawab.MaxLength = 50
'cmdtambah.SetFocus
End Sub
Private Sub NomorUrut()
Dim I As Integer
For I = 1 To fg.Rows - 1
fg.TextMatrix(I, 0) = I
Next I
End Sub
Private Sub Form_Load()
konekin
koneksi.CursorLocation = adUseClient
tabel
semula
End Sub
Private Sub cmdtambah_Click()
cek = True
bersihkan
pesan = ""
Aktifkan
txtid_pengguna.SetFocus
fg.Enabled = False
cmdsimpan.Enabled = True
cmdbatal.Enabled = True
cmdtambah.Enabled = False
End Sub
Private Sub cmdsimpan_Click()
If txtnm_pengguna.Text = "" Then
txtnm_pengguna.SetFocus
ElseIf txtpassword_pengguna.Text = "" Then
txtpassword_pengguna.SetFocus
ElseIf txttanya.Text = "" Then
txttanya.SetFocus
ElseIf txtjawab.Text = "" Then
txtjawab.SetFocus
Else
If cek = True Then
query = "INSERT into tbpengguna values('" & txtid_pengguna.Text & "','" & txtnm_pengguna.Text & "','" & txtpassword_pengguna.Text & "','" & txttanya.Text & "','" & txtjawab.Text & "')"
koneksi.Execute query, , adCmdText
tabel
pesan = "Data Tersimpan"
Else
query = "UPDATE tbpengguna set nm_pengguna='" & txtnm_pengguna.Text & "',password_pengguna='" & txtpassword_pengguna.Text & "',pertanyaan='" & txttanya.Text & "',jawaban='" & txtjawab.Text & "' where id_pengguna='" & txtid_pengguna.Text & "'"
koneksi.Execute query, , adCmdText
tabel
pesan = "Data Tersimpan"
End If
semula
End If
End Sub
Private Sub cmdhapus_Click()
a = MsgBox(" Yakin ingin menghapus data ?", vbOKCancel + vbQuestion, "TANYA")
If a = vbOK Then
Set recordset = koneksi.Execute("delete*from tbpengguna where id_pengguna='" & txtid_pengguna & "'")
End If
tabel
semula
pesan = "Sukses Hapus Data"
End Sub
Private Sub cmdbatal_Click()
semula
End Sub
Private Sub cmdubah_Click()
cek = False
Aktifkan
txtid_pengguna.Locked = True
txtnm_pengguna.SetFocus
cmdubah.Enabled = False
cmdsimpan.Enabled = True
cmdhapus.Enabled = False
cmdtambah.Enabled = False
End Sub
Private Sub cmdtutup_Click()
Unload Me
End Sub
Private Sub labelaman_Click()
With frmsetaman
.id_pengguna = txtid_pengguna.Text
.Show vbModal
End With
End Sub
Private Sub txtpassword_pengguna_KeyPress(KeyAscii As Integer)
Call AlphaNumericValid(KeyAscii)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii = 13 Then
cmdsimpan.SetFocus
End If
End Sub
Private Sub txtid_pengguna_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Set recordset = New ADODB.recordset
recordset.Open "select*from tbpengguna where id_pengguna='" & txtid_pengguna.Text & "'", koneksi, adOpenDynamic, adLockBatchOptimistic
If recordset.BOF Then
txtnm_pengguna.SetFocus
Else
With recordset
txtnm_pengguna.Text = !nm_pengguna
txtpassword_pengguna.Text = !password_pengguna
End With
txtid_pengguna.Enabled = False
txtnm_pengguna.SetFocus
cmdubah.Enabled = True
cmdhapus.Enabled = True
cek = False
End If
End If
End Sub
Private Sub txtnm_pengguna_KeyPress(KeyAscii As Integer)
Call AlphaNumericValid(KeyAscii)
If KeyAscii = 13 Then
txtpassword_pengguna.SetFocus
End If
End Sub
Setelah itu baru membuat form login dengan rincian
2 buah label, dua buah textbox dan 3 buah command button.
Kemudian koding:
Private Sub cmdbatal_Click()
Me.txtnm_pengguna.Text = ""
Me.txtpassword_pengguna.Text = ""
End Sub
Private Sub cmdkeluar_Click()
Unload Me
With Menu_Utama
End
End With
End Sub
Private Sub cmdlogin_Click()
Call BukaKoneksi
If Me.txtnm_pengguna.Text = vbNullString Then
MsgBox " Nama Belum Diisi", vbInformation + vbOKOnly, "EROR"
Me.txtnm_pengguna.SetFocus
ElseIf Me.txtpassword_pengguna.Text = vbNullString Then
MsgBox " password Belum Diisi", vbInformation + vbOKOnly, "ERROR"
' Me.txtpassword_pengguna.SetFocus
Else
Set rs = New ADODB.Recordset
rs.Open "select nm_pengguna from tbpengguna where id_pengguna='" & txtnm_pengguna & "'", con, adOpenDynamic, adLockBatchOptimistic
If Not rs.EOF Then
query = "SELECT * from tbpengguna Where id_pengguna='" & (Me.txtnm_pengguna.Text) & "' AND password_pengguna='" & (Me.txtpassword_pengguna.Text) & "'"
Set rs = con.Execute(query)
If Not rs.EOF Then
MsgBox " Selamat, Login Berhasil", vbInformation + vbOKOnly, "SUCCES"
If vbOK Then
Menu_Utama.Enabled = True
Menu_Utama.Show
Menu_Utama.SB.Panels(2) = Me.txtnm_pengguna.Text
Menu_Utama.SB.Panels(9) = rs!id_pengguna
Unload Me
Else
Me.txtpassword_pengguna.Text = ""
Me.txtnm_pengguna.Text = ""
End If
Else
MsgBox " Password Salah Coba cek Lagi", vbInformation + vbOKOnly, "ERROR"
Me.txtpassword_pengguna.Text = vbNullString
Me.txtpassword_pengguna.SetFocus
End If
Else
MsgBox "ID Pengguna Salah "
Me.txtnm_pengguna.Text = ""
Me.txtpassword_pengguna.Text = ""
Me.txtnm_pengguna.SetFocus
End If
End If
End Sub
Private Sub cmdlupa_Click()
If txtnm_pengguna.Text = "" Then
MsgBox "silakan isi id anda terlebih dahulu"
txtnm_pengguna.SetFocus
Else
Set rs = New ADODB.Recordset
rs.Open "select*from tbpengguna where id_pengguna='" & txtnm_pengguna.Text & "'", con, adOpenDynamic, adLockBatchOptimistic
If Not rs.EOF Then
frmlupapassword.Label1 = rs!pertanyaan
frmlupapassword.Label2 = rs!jawaban
frmlupapassword.Show vbModal
End If
End If
End Sub
Private Sub Form_Load()
Call BukaKoneksi
txtpassword_pengguna.Enabled = False
End Sub
Private Sub Form_Unload(Cancel As Integer)
If Me.Caption = "LOG OFF SYSTEM" Then
Unload Menu_Utama
Else
Unload Me
End If
End Sub
Private Sub txtnm_pengguna_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
cmdlogin.Enabled = True
txtpassword_pengguna.Enabled = True
txtpassword_pengguna.SetFocus
End If
End Sub
Lalu untuk form lupa password seperti dibawah ini
Koding:
Private Sub cmdforgot_Click()
Call BukaKoneksi
Set rs = New ADODB.recordset
rs.Open "select*from tbpengguna where pertanyaan='" & Label1 & "'", con, adOpenDynamic, adLockBatchOptimistic
If txtjawab.Text = Label2 Then
frm_Login.txtpassword_pengguna = rs!password_pengguna
Me.Hide
Unload Me
Else
MsgBox "Maaf Jawaban tidak sesuai, password tidak akan diproses"
txtjawab.Text = ""
txtjawab.SetFocus
End If
End Sub
Cara kerjanya:
- Kita mendaftar di form user dengan mengisi data secara lengkap di form_user berikut pertnyaan dan jawaban. Pertanyaan dan jawaban ini yang nantinya akan menjadi kata kunci ketika user ingin login namun lupa password. Buatlah pertnyaan seunik mungkin dan mudah diingat dan hanya user yang tahu.
- Setelah dari form login kita masuk form login. User akan mengisi id dan password klik tombol login. Pertama kali program akan memeriksa id pengguna jika ternyata id pengguna salah maka akan muncul pesan" id pengguna salah" Jika benar maka program selanjutnya mengecek password jika password benar maka program menu utama akan muncul jika salah maka muncul pesan "Password salah coba cek lagi".
- Jika ternyata setelah mencoba berulangkali mengisi password dan user tidak juga ingat password. Maka klik tombol lupa password.
- Setelah muncul form lupa password maka disana akan muncul perntanyaan yang telah dibuat di tabel pengguna. User tinggal mengisi jawaban yang sesuai di textbox yang tersedia dan OK. Jika jawaban benar maka password akan ditampilkan di form login dan jika jawaban salah maka pogram akan memberitahu " Maaf jawaban tidak sesuai password tidak akan diproses".
Mudah-mudahan bermanfaat. Tetap semangat dan terus mencoba :)