Membuat Validasi Login User Berbasis Database di Borland Delphi

Saturday, February 9, 2008

Jika Anda membuat aplikasi untuk beberapa user group atau user level. Misalnya aplikasi anda digunakan untuk mengolah data penjualan suatu barang dan di aplikasi anda tersebut misalnya terdapat beberapa modul/menu diantaranya input data barang, input data penjualan, input data pembelian, laporan barang masuk, laporan barang keluar, laporan rugi laba, administrasi user dan lain sebagainya.




Nah tidak semua orang/user tentunya mempunyai hak untuk mengakses semua modul/menu tersebut. Misalnya ada dua level user yaitu Administrator dan operator. Operator hanya bertugas untuk menginput data barang, input data pembelian, input data penjualan, laporan barang masuk dan laporan barang keluar. Untuk Laporan Keuangan Rugi Laba dan administrasi user hanya boleh diakses oleh Administrator yang mempunyai kewenangan penuh terhadap seluruh aplikasi. Untuk itu tentunya aplikasi anda membutuhkan sebuah validasi user yaitu lewat sebuah proses login.



berikut ini saya akan memberikan sebuah contoh pembuatan aplikasi untuk validasi login user berbasis databases di borland delphi. Disini saya menggunakan borland delphi versi 7.



Sebelum mulai dengan Delphi anda harus membuat dahulu sebuah database misalnya kita gunakan database Microsoft Access.


  • Masuk ke Microsoft Access buat database baru : File | New | Blank Database. Simpan di folder C:\APP\Login dengan nama DelphiTutorial.mdb.

  • Buat table baru : Insert | Table. Pada kotak dialog yang muncul pilih Design View klik ok.




Buat struktur tabel seperti dibawah ini :























Filed Name Data Type Size
Username Text 30
Password Text 50
Status Text 1


Field Status digunakan untuk pengenalan level user (0 untuk operator dan 1 untuk administrator). Berikan primary key pada field Username dan simpan table dengan nama Login. Kemudian isikan beberapa data, contoh :



















Username Password Status
yana belajar 0
yanadoe delphi tutor 1





  • Buat sebuah project baru di Delphi : File | New | Aplication

  • Tambahkan dua buah komponen Edit dan dua buah komponen Button dan dua buah komponen Label

  • Tambahkan sebuah form lagi : File | New | Form.



Set property tiap komponen sebagai berikut :










































































Nama Komponen Nama Property Nilai
- Form1 Name FLogin
- Form2 Name FMenu
- Label1 Name Label1
Caption Username
- Label2 Name Label2
Caption Password
- Edit1 Name EUsername
- Edit2 Name EPassword
PasswordChar *
- Button1 Name BtnOk
Caption Login
- Button2 Name BtnCancel
Caption Batal


Sehingga tampilannya seperti ini





  • Simpan project di C:\APP\Login dengan nama PLogin.dpr.
  • Klik Flogin, tambahkan sebuah komponen AdoQuery (ada di tab ADO)

  • Set Property Namenya : AQLogin

  • Set Property ConnectionString : Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DelphiTutorial.mdb;Persist Security Info=False

  • klik form Fmenu kemudian tambahkan komponen MainMenu.

  • Dobel klik komponen MainMenu dan tambahkan satu menu dan beberapa submenu sehingga tampilannya seperti dibawah ini :






  • dobel klik komponen BtnOk di form FLogin kemudian isikan kode berikut :





aqlogin.Close;
aqlogin.SQL.Text := 'select * from login where username = :un and password = :pw';
aqlogin.Prepared := true;
aqlogin.Parameters[0].Value := EUsername.Text;
aqlogin.Parameters[1].Value := EPassword.Text;
aqlogin.Open;

if aqlogin.RecordCount < 1 then // jika data tidak ada, tampilkan pesan error
Messagedlg('Username tidak dikenal',mterror,[mbok],0)
else if aqlogin.RecordCount > 0 then // jika data ada, cek status
begin
if aqlogin.FieldValues['status'] = '0' then // jika status 0, maka menu administrator disembunyikan
begin
fMenu.caption := 'Anda login sebagai Operator';
fmenu.Administrator1.visible := false;
end
else if aqlogin.FieldValues['status'] = '1' then
fMenu.caption := 'Anda login sebagai Administrator'
else
begin
Messagedlg('User level tidak jelas, login gagal',mterror,[mbok],0);
exit;
end;
end;

flogin.Hide;
fMenu.show;



  • Dobel klik komponen BtnCancel, kemudian tambahkan kode berikut :



  • application.Terminate;



    Kode pada BtnOk akan memeriksa username dan password dengan data yang ada di tabel login. Jika data ada (login sukses) maka akan ditampilkan form FMenu. Main Form untuk project ini adalah Flogin jadi meskipun anda sudah menutup form FMenu dan seolah-olah aplikasi sudah tertutup, padahal sebenarnya aplikasi tersebut masih berjalan dikarenakan Flogin yang jadi Main Form belum tertutup. Untuk membuktikannya, klik kanan di taskbar dan pilih Task Manager. Klik pada tab Proses kemudian cari entry dengan nama Plogin.exe.



    Untuk mengatasi masalah tersebut, klik di FMenu kemudian pada Object Inspector klik tab Events kemudian dobel klik pada event OnClose, lalu tambahkan kode berikut :




    application.Terminate;



    Dengan demikian aplikasi akan di terminate ketika anda menutup form Fmenu

    .

    3 comments:

    Suya Lynx said...

    mohon maaf, tapi ada kelamahan di tutorial anda
    saat saya coba buat dan modifikasi sendiri (modifikasi nama form serta database yg diperlukan) terjadi hal yang aneh saat login

    hal tersebut akibat dari kurangnya aksi pada baris sbb

    if aqlogin.RecordCount < 1 then // jika data tidak ada, tampilkan pesan error
    Messagedlg('Username tidak dikenal',mterror,[mbok],0)

    yg terjadi adalah user masih tetap dapat login dgn privilege admin namun dgn tampilan user

    mohon bantuannya untuk membuat aplikasi terminated saat user salah atau form otomatis melakukan reset form saat user salah

    Yanadoe said...

    makasih banyak mas suya lynx atas masukannya. udah aku cek tadi, tapi aplikasi ini berjalan lancar aja, mungkin ada yg kelewat kali kodenya.

    kalo buat reset textbox username dan password pakai ini aja

    if aqlogin.RecordCount < 1 then // jika data tidak ada, tampilkan pesan error
    begin
    Messagedlg('Username tidak dikenal',mterror,[mbok],0);
    eusername.Clear;
    epassword.Clear;
    eusername.setfocus;
    { kalau mau terminate applikasi
    pakai : application.terminate }
    Exit;
    end;

    dedy said...

    mas q nyoba kok g bisa y setelah mengisi password dan saya klik ok ko' error salahnya di
    prepared:=true;
    mohon pencerahannya...
    terimah kasih....

    Recent Comments

    Tags Cloud

    Blogumulus by Roy Tanck and Amanda Fazani