Pages

Saturday 5 April 2014

Membuat Form Login dengan tambahan "Lupa Password" VB 6

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 :)



2 comments: